【发布时间】:2015-12-03 23:05:52
【问题描述】:
我在编程课上被分配了家庭作业。我明白它的要点,但我觉得有点失落。我想要一些帮助和反馈。
我的问题: 一个特定的人才组合有 5 名评委,每个评委给每个表演者打 0 到 10 分。允许使用分数分数,例如 8.3。表演者的最终分数是通过去掉所收到的最低和最高分,然后取其余 3 个分数的平均值来确定的。编写一个程序,使用这种方法计算参赛者的分数。它应该包括以下功能:
double getJudgeData() 应该向用户询问裁判的分数并验证分数。这个函数应该从 main 调用 5 次,5 位评委各调用一次。 void calcScore() 应该计算并显示在删除表演者收到的最高和最低分数后剩下的三个分数的平均值。这个函数应该从 main 调用一次,并且应该传递 5 个分数。 下面描述的最后两个函数应该由 calcScore 调用,它使用返回的信息来确定要删除哪个分数。
double findLowest() 应该找到并返回传递给它的五个分数中的最低值。 double findHighest() 应该找到并返回传递给它的五个分数中的最高值。 输入验证:不接受低于 0 或高于 10 的评委分数。
我知道获取评委数据的代码看起来类似于
Double getJudgeData(double score){
cout << "Judge, please enter your score";
cin >> score;
while (score<0.0 || score> 10.0){
cout << "Invalid score. Please enter a correct one";
cin>>score
}
return score;
}
基本上重复了 4 次,总共 5 次。我想我只需将变量名称更改为 score1、score2 等。 为了计算出最高分和最低分,我想我可以只使用几个 if 语句。 例如,
if (score < lowest)
lowest=score;
else if (score1 < score)
lowest = score1;
else if (score2 < score)
lowest = score2;
else if (score3 < score)
lowest = score3;
else if (score4 < score)
lowest = score4;
最高的则相反。
我想我最大的问题是 void calcscore() 的编码和理解这一切。我觉得我完全不明白。就像我理解的那样,我正在使用函数来找出每种情况下的评委分数并将分数发送回 main。但是,我只是觉得我不明白我在做什么。我想要一些指导。提前谢谢你。
编辑 好的,我已经对我的代码进行了更多处理,然后就到了这里。
#include <iostream>
using namespace std;
double getJudgeData(double score) {
cout << "Judge 1 please enter your score: ";
cin >> score;
while (score < 0.0 || score > 10.0) {
cout << "Invalid score. Please enter a correct one" << endl;
cin >> score;
}
return score;
}
double getJudgeData1(double score1) {
cout << "Judge 2 please enter your score: ";
cin >> score1;
while (score1 < 0.0 || score1 > 10.0) {
cout << "Invalid score. Please enter a correct one" << endl;
cin >> score1;
}
return score1;
}
double getJudgeData2(double score2) {
cout << "Judge 3 please enter your score: ";
cin >> score2;
while (score2 < 0.0 || score2 > 10.0) {
cout << "Invalid score. Please enter a correct one" << endl;
cin >> score2;
}
return score2;
}
double getJudgeData3(double score3) {
cout << "Judge 4 please enter your score: ";
cin >> score3;
while (score3 < 0.0 || score3 > 10.0) {
cout << "Invalid score. Please enter a correct one" << endl;
cin >> score3;
}
return score3;
}
double getJudgeData4(double score4) {
cout << "Judge 5 please enter your score: ";
cin >> score4;
while (score4 < 0.0 || score4 > 10.0) {
cout << "Invalid score. Please enter a correct one" << endl;
cin >> score4;
}
return score4;
}
double findHighest(double score, double score1, double score2, double score3, double score4) {
double highest = score;
if (score1 > highest)
highest = score1;
else if (score2 > highest)
highest = score2;
else if (score3 > highest)
highest = score3;
else if (score4 > highest)
highest = score4;
return highest;
}
double findLowest(double score, double score1, double score2, double score3, double score4) {
double lowest = score;
if (score1 < lowest)
lowest = score1;
else if (score2 < lowest)
lowest = score2;
else if (score3 < lowest)
lowest = score3;
else if (score4 < lowest)
lowest = score4;
return lowest;
}
void calcScore(double score, double score1, double score2, double score3, double score4, double highest, double lowest) {
double findHighest(highest);
double findLowest(lowest);
double avgScore = (score + score1 + score2 + score3 + score4 - lowest - highest) / 3;
cout << "\nThe contestant's average score is: " << avgScore << endl;
}
int main(double score, double score1, double score2, double score3, double score4, double highest, double lowest) {
getJudgeData(score);
getJudgeData1(score1);
getJudgeData2(score2);
getJudgeData3(score3);
getJudgeData4(score4);
system("PAUSE");
return 0;
}
它运行并能够检测代码是否对所有裁判无效。就在它获得评委的所有输入之后,它只会说“按任意键继续”两次并结束。它似乎没有通过 void calcscore 部分。
【问题讨论】: