Я прохожу курс C++ для начинающих, и сейчас я борюсь с заданием. Задание было:
В конкретном конкурсе талантов участвуют 5 судей, каждый из которых присуждает балл от 0 до 10 каждому исполнителю. Напишите программу, которая использует эти правила для вычисления и отображения результатов участника. Он должен включать в себя следующие функции:
• int getJudgeData() должна запрашивать у пользователя оценку судьи, сохранять ее в переменной ссылочного параметра и проверять ее. Эта функция должна быть вызвана main один раз для каждого из 5 судей.
• double calcScore() должна вычислять и возвращать среднее из 3 оценок, оставшихся после отбрасывания самой высокой и самой низкой оценок, полученных исполнителем. Эта функция должна быть вызвана main только один раз и должна пройти 5 баллов.
Две дополнительные функции, описанные ниже, должны быть вызваны функцией calcScore, которая использует возвращенную информацию, чтобы определить, какие оценки следует отбросить.
• int findLowest() должна найти и вернуть наименьшую из 5 переданных ей оценок.
• int findHighest() должна находить и возвращать наивысшую из 5 переданных ей оценок.
При тестировании моей программы она работает правильно, если оценка первого судьи является самой низкой, но теперь она будет работать правильно для любых других судей, имеющих самую низкую оценку.
Ex: I will enter 2,1,5,4,3 so it should drop the 1 & 5 and come out with the avg of 3 but the result is 2.6667
код, который у меня есть для int findLowest()
:
int findLowest(int scoreOne,int scoreTwo,int scoreThree,int scoreFour,int scoreFive)
{
int lowest = scoreOne;
if ( scoreTwo < lowest )
lowest = scoreTwo;
if ( scoreThree < lowest )
lowest = scoreThree;
if ( scoreFour < lowest )
lowest = scoreFour;
if ( scoreFive < lowest )
lowest = scoreFive;
return lowest;
}
int findHighest
аналогичен, но очевидно, что символы меньше чем переключаются.
для функции calcAverage()
у меня есть:
double calcAverage(double OneScore,double twoScore,double threeScore, double fourScore,double fiveScore)
{
double lowest, highest, sum;
lowest=findLowest(OneScore,twoScore,threeScore,fourScore,fiveScore);
highest=findHighest(OneScore,twoScore,threeScore,fourScore,fiveScore);
sum = (OneScore + twoScore + threeScore + fourScore + fiveScore);
sum = sum - lowest;
sum = sum - highest;
sum = sum / 3;
cout<<"\nAfter droping highest and lowest scores\n";
cout<<"Your average score is "<<sum << endl;
return 0;
}
EDIT: я поместил операторы cout в функции findHighest и findLowest, чтобы проверить правильность определяемого числа, и каждый раз, когда он выбирает правильное наибольшее число, а для наименьшего оно будет иметь 0
РЕДАКТИРОВАТЬ ВТОРОЕ: я обнаружил, что программа присваивает баллу от 1 значение 0 независимо от того, что вводится. Программа принимает правильный ввод для других оценок.
int
s, пока вы не вычислите среднее значение, почему всеdouble
? - person Barry   schedule 11.11.2014int
, а неdouble
, и я поменял их местами в своей программе, но это не решило проблему. - person Brendon   schedule 11.11.2014