Я не могу заставить мой код работать правильно. Я получаю сообщение об ошибке
«Ошибка 1, ошибка C2078: слишком много инициализаторов, строка: 17, столбец: 1»
а также
«Ошибка 2 IntelliSense: ожидается a ‘)’ Строка: 17 Comlumn: 21»
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
void getScore(int &, int &, int &, int &,int &);
void calcAverage(int, int, int, int, int);
int findLowest(int, int, int, int, int);
int main()
{
int num1, num2, num3, num4, num5;
string response;getScore(num1, num2, num3, num4, num5);
int findlowest(num1, num2, num3, num4, num5);
//calcAverage(num1, num2, num3, num4, num5);
cout << "Are there any more test scores?" << endl;
cin >> response;
cout << endl;
if (response == "yes")
{
getScore(num1, num2, num3, num4, num5);
//calcAverage(num1, num2, num3, num4, num5);
}
system("pause");
return 0;
}
void getScore(int &num1, int &num2, int &num3, int &num4, int &num5)
{
cout << "What was your score for the first test?" << endl;
cin >> num1;
cout << endl;
if (num1 < 1 || num1 > 100)
{
cout<<"Scores must be between 1 and 100, re-enter the score" << endl;
cin >> num1;
}
cout << "What was your score for the second test?" << endl;
cin >> num2;
cout << endl;
if(num2 < 1 || num2 > 100)
{
cout<<"Scores must be between 1 and 100, re-enter the score" << endl;
cin >> num1;
}
cout << "What was your score for the third test?" << endl;
cin >> num3;
cout << endl;
if(num3 < 1 || num3 > 100)
{
cout<<"Scores must be between 1 and 100, re-enter the score" << endl;
cin >> num1;
}
cout << "What was your score for the fourth test?" << endl;
cin >> num4;
cout << endl;
if(num4 < 1 || num4 > 100)
{
cout<<"Scores must be between 1 and 100, re-enter the score" << endl;
cin >> num1;
}
cout << "What was your score for the fifth test?" << endl;
cin >> num5;
cout << endl;
if(num5 < 1 || num5 > 100)
{
cout<<"Scores must be between 1 and 100, re-enter the score" << endl;
cin >> num1;
}
}
int findLowest(int num1, int num2, int num3, int num4, int num5)
{
int lowest;
lowest = num1;
if (num2 < lowest)
{
lowest = num2;
}
else if (num3 < lowest)
{
lowest = num3;
}
else if (num4 < lowest)
{
lowest = num4;
}
else if (num5 < lowest)
{
lowest = num5;
}
cout << "the lowest test score is " << lowest << endl;
return lowest;
}
void calcAverage(int num1, int num2, int num3, int num4, int num5)
{
int findLowest(int, int, int, int, int);
int lowest;
double average;
findLowest(num1, num2, num3, num4, num5);
cout << lowest << endl;
average = (((float)num1 + num2 + num3 + num4 + num5) - lowest) / 4.0;
cout << showpoint << setprecision(8) << average << endl;
}
Измени это утверждение
int findlowest(num1, num2, num3, num4, num5);
в
int lowest = findLowest(num1, num2, num3, num4, num5);
или просто как
findLowest(num1, num2, num3, num4, num5);
потому что вы не используете возвращаемое значение.
Также название функции findLowest
,
Также эта часть кода
cout << "Are there any more test scores?" << endl;
cin >> response;
cout << endl;
if (response == "yes")
{
getScore(num1, num2, num3, num4, num5);
//calcAverage(num1, num2, num3, num4, num5);
}
не имеет никакого смысла.
Функция findLowest также неверна. Он не находит самый низкий. Например, рассмотрим случай, когда num1, num2, num3, num4, num5 имеют значения 5, 4, 3, 2, 1 соответственно.
И даже функция calcAverage неверна, потому что она использует неинициализированную переменную низшего уровня.
Там должен быть
int lowest = findLowest(num1, num2, num3, num4, num5);
Однако из-за неправильного оформления функции findLowest сообщение о наименьшем числе будет выдано дважды.
Также обратите внимание, что вы определяете функцию как
int findLowest (int, int, int, int, int);
с «L», и вы называете это с
int findlowest (num1, num2, num3, num4, num5);
с «l» не тем же именем функции :).