Я беру курс C ++ для начинающих и сейчас борюсь с заданием. Назначение было:
В конкретном конкурсе талантов участвуют 5 судей, каждый из которых присуждает оценку от 0 до 10 каждому исполнителю. Напишите программу, которая использует эти правила для расчета и отображения оценки участника. Он должен включать следующие функции:
• int getJudgeData () должен запросить у пользователя оценку судьи, сохранить ее в переменной ссылочного параметра и проверить ее. Эта функция должна вызываться главным образом один раз для каждого из 5 судей.
• double calcScore () должен вычислять и возвращать среднее значение из 3 баллов, оставшихся после сброса наивысшего и наименьшего баллов, полученных исполнителем. Эта функция должна вызываться только один раз по основному и должна проходить 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;
}
РЕДАКТИРОВАТЬ: я поместил операторы cout в функции findHighest и findLowest, чтобы проверить, какое число оно определяет, является правильным, и каждый раз, когда оно выбирает правильное наибольшее число, а для самого низкого оно будет иметь значение 0
РЕДАКТИРОВАТЬ ВТОРОЕ: я обнаружил, что программа устанавливает счет от 1 до 0 независимо от того, что вводится. Программа принимает правильные данные для других результатов.
После быстрого просмотра, ваш код должен работать. Запустите его снова и убедитесь, что каждый оператор if соответствует тому, что вы хотите сделать. Если это не работает по-другому, вы можете попробовать это
double lowest = oneScore;
if (twoScore < lowest)
lowest = twoScore;
if(threeScore < lowest)
lowest = threeScore;
etc...
Ваша функция calcAverage (), вероятно, только сбой из-за функций lower () и hihgest ().
РЕДАКТИРОВАТЬ: Если вы выучили массивы, используйте его для объявления массива оценок, а затем используйте цикл for для итерации, как намекает Пол в своем комментарии.