我正在参加初学者C ++课程,现在我正在努力完成一项任务。作业是:
特定的人才竞赛有5名评委,每名评委都会给每位表演者0到10分。编写一个程序,使用这些规则来计算和显示参赛者的分数。它应包括以下功能:
•int getJudgeData()应该询问用户法官的分数,将其存储在参考参数变量中并验证它。对于5名评委中的每一名,这个函数应该由main调用一次。
•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;
}
编辑:我已将cout语句放在findHighest和findLowest函数中,以检查它确定的数字是否正确,每次选择正确的最高数字,而最低数字则为0 < / p>
编辑二:我发现程序将得分1设为0,无论输入的是什么。该程序为其他分数采用正确的输入。
答案 0 :(得分:1)
快速浏览后,您所拥有的代码应该正常运行。再次运行它并确保每个if语句与您想要执行的操作一致。如果这不起作用,你可以试试
double lowest = oneScore;
if (twoScore < lowest)
lowest = twoScore;
if(threeScore < lowest)
lowest = threeScore;
etc...
由于最低()和hihgest()函数,你的calcAverage()函数可能只会失败。
编辑:如果您已经学习了数组,请使用它来声明一个分数数组,然后使用for循环进行迭代,正如保罗在他的评论中暗示的那样