【发布时间】:2014-11-11 02:52:10
【问题描述】:
我正在学习 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;
}
编辑:我已经在 findHighest 和 findLowest 函数中放置了 cout 语句,以检查它确定的数字是正确的,并且每次选择正确的最高数字和最低的数字时,它将有 0
编辑二:我发现无论输入什么,程序都会将分数设置为 0。程序会为其他分数输入正确的输入。
【问题讨论】:
-
你能想象如果有 100 名评委,甚至 20 名评委吗?输入所有代码后,您将需要一个新键盘。提示:学习数组。
-
@PaulMcKenzie 谢谢你的建议。我们还没有在这门课程中学习数组,所以教授没有让我们在这里使用它们。
-
我可以看到一个有 3 位评委的练习,并且要求您编写这样的代码。但是,如果你被告知以这种方式做事,那么任何高于 3 的东西都会变成一个恶作剧。处理 > 3 个项目的方式总是(我什至不会说“几乎总是”)使用数组或某种聚合类型。
-
我相信这就是我们接下来要介绍的内容,所以我们可能会再次收到相同的作业,但评委和教授的数量会增加,并且正在寻找要使用的数组
-
这里有一些类型混淆。在计算平均值之前,一切都应该是
ints,为什么一切都是double?
标签: c++ date-arithmetic