Непонятно, почему вы держите оценки в массиве std::string
. Вы не можете использовать объекты типа std::string
в арифметических операциях. Вы должны преобразовать объект типа станда :: строк в некоторый арифметический тип, например, к int
Например
total += std::stoi(score[i]);
Кроме того, ваша функции неопределенного поведения, потому что ничего не возвращает, а третий параметр функции не требуется. И вы забыли инициализировать переменную total.
Я бы записать функцию следующим образом
double calculateAverageScore(const string score[], int numPlayers)
{
double total = 0.0;
for (int i = 0; i < numPlayers; i++)
{
total += stoi(score[i]);
}
return ( numPlayers == 0 ? 0.0 : total/numPlayers);
}
и в основном она может быть вызвана как
cout << "Average: " << calculateAverageScore(YourArrayOfStrings, NumberOfElements) << endl;
Вместо петли можно использовать стандартный алгоритм std::accumulate
заявленную в заголовке <numeric>
. Например
double total = std::accumulate(score, score + numPlayers, 0);
Вы должны разобрать строки 'score' в парном разряде или плавает, чтобы использовать '+ ='. – Netwave
Вы не можете добавить 'std :: string' в' double'. –