如何在跳水比赛中降低最高/最低得分?

时间:2019-04-05 00:53:54

标签: c++

我正在为涉及潜水比赛的C ++问题编写代码。我的代码编译并要求用户在1-10之间给5分。它还将潜水难度定在1-1.67之间,并计算每个潜水员的总成绩和每个潜水员的平均值。

我在将最高和最低分数仅累加到totalScore的循环中遇到了麻烦,因此我无法进行比较,因为我没有(score1,{ {1}},score2score3score4)。取而代之的是,所有值都存储在score5中,由于我正在使用循环,因此我不确定如何将输入的最高值和最低值进行比较。

有什么方法可以在我的循环内执行此操作吗?

我已经尝试使用if-else语句将每个分数与当前的最大/最小值进行比较,但是我的分数都保存在一个变量中。我试图将输入分数设置为长的if-else语句,但是如果输入为(5,7,6,8,9),则当第一次通过循环处理5时,它将保存为“最高分数”,因为从逻辑上讲,它是当前最高的分数,但是当我在循环中运行下一个数字时,它将替换为5,因为在逻辑上7大于5,并且没有将5放入totalScore中,因为循环已经运行了,所以7替换为5。

lowestscore

例如,输入:

法官1:8,法官2:8,法官3:8,法官4:7,法官5:9,

潜水难度:1

总得分应简单地为8,方法是只加8,然后减去7和9,然后除以剩余的3分,再乘以1;但是,每当我使用比较if-else语句(在“ //将分数加到总计”下)时,它都不会正确地将当前输入与正在运行的高/低分数进行比较。我不确定是否甚至可能只有一个输入变量存储所有分数。我想我必须在循环中使用一个循环,但是我不确定如何设置它。

2 个答案:

答案 0 :(得分:2)

int max = 0

当用户输入数字或法官输出分数时,只需将该数字与最大值进行比较即可。如果该数字大于max,则使max =输出。

继续执行此操作,可以确保在输入循环结束时获得最大值。

同一概念适用于一分钟。只要拥有int min = INT_MAX

答案 1 :(得分:0)

您需要做的是在获取输入时跟踪循环中的最小值和最大值。

// Initialize these before the first loop...
double highScore = 0.0;
double lowScore = 10.0;
...

...
while (inputScore < 0 || inputScore > 10) // Validate if the input score is between 0-10
{
   cout << "Invalid score - Please reenter (Valid Range: 0 - 10)" << endl;
   cout << "Enter the score given by Judge #" << numJudges << ": ";
   cin >> inputScore;
}
highScore = std::max(inputScore, highScore);
lowScore = std::min(inputScore, lowScore);
totalScore += inputScore;
...