首页 > 解决方案 > 节目结束得太早

问题描述

我正在编写一个程序,其中 5 名评委输入 0 到 10 之间的分数,并在删除最高和最低分数后计算平均值。每次我运行程序时,它都会在只输入一个分数后计算平均值并停止程序。我不知道我做错了什么。我怎样才能让它在收集所有 5 个分数的地方运行,下降最高和最低,然后计算平均值?这是我的代码:

#include "pch.h"
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;


void getjudgescore(double& judge1, double& judge2, double& judge3, double& judge4, double& judge5)
{
    for (int judge = 1; judge < 6; judge++)
    {
        double j = 0;
        do
        {
            cout << "Judge #" << judge << " - Please enter a score between 0.0 and 10.0 : ";
            cin >> j;
            if (j < 0 || j > 10)
            {
                cout << "Score must be between 0.0 and 10.0 : ";
                cin >> j;
            }
        } while (j < 0 || j > 10);
        switch (judge)
        {
        case 0: if (judge == 1)
        {
            judge1 = j;
            break;
        }
        case 1: if (judge == 2)
        {
            judge2 = j;
            break;
        }
        case 2: if (judge == 3)
        {
            judge3 = j;
            break;
        }
        case 3: if (judge == 4)
        {
            judge4 = j;
            break;
        }
        case 4: if (judge = 5)
        {
            judge5 = j;
            break;
        }
        }
    }
}
double findLowest(double& judge1, double& judge2, double& judge3, double& judge4, double& judge5)
{
    double lowest = 10;
    if (lowest > judge1)
    {
        lowest = judge1;
    }
    if (lowest > judge2)
    {
        lowest = judge2;
    }
    if (lowest > judge3)
    {
        lowest = judge3;
    }
    if (lowest > judge4)
    {
        lowest = judge4;
    }
    if (lowest = judge5)
    {
        lowest = judge5;
    }
    return lowest;
}
double findHighest(double& judge1, double& judge2, double& judge3, double& judge4, double& judge5)
{
    double highest = 0;
    if (judge1 > highest)
    {
        highest = judge1;
    }
    if (judge2 > highest)
    {
        highest = judge2;
    }
    if (judge3 > highest)
    {
        highest = judge3;
    }
    if (judge4 > highest)
    {
        highest = judge5;
    }
    return highest;
}
double calcScore(double& judge1, double& judge2, double& judge3, double& judge4, double& judge5, double& highest, double& lowest)
{
    double total = 0;
    double average = 0;
    total = judge1 + judge2 + judge3 + judge4 + judge5;
    total = total - highest - lowest;
    average = total / 3;
    cout << "Final Score : " << average;
    return average;
}
int main()
{
    double judge1 = 0, judge2 = 0, judge3 = 0, judge4 = 0, judge5 = 0;
    double totalscore = 0;
    double highscore = 0;
    double lowscore = 0;
    double highest = 0;
    double lowest = 0;
    getjudgescore(judge1, judge2, judge3, judge4, judge5);
    findLowest(judge1, judge2, judge3, judge4, judge5);
    findLowest(judge1, judge2, judge3, judge4, judge5);
    calcScore(judge1, judge2, judge3, judge4, judge5, highest, lowest);
}

标签: c++

解决方案


这是您的开关中的 if 语句,它们都被偏移了一个。

switch(judge)
{
    case 0: if (judge == 1)
    {
        judge1 = j;
        break;
    }

if 永远不会评估 true,因为当 case 有效时,judge为 0。

此外,switch 中的 if 语句是多余的。


推荐阅读