在球员计分计划中显示低于平均分

Posted

技术标签:

【中文标题】在球员计分计划中显示低于平均分【英文标题】:Showing Below Average Scores in Player Scoring Program 【发布时间】:2017-04-03 05:03:55 【问题描述】:

我正在尝试创建一个程序,用户可以在其中输入多达 100 个球员的姓名和分数,然后让它打印出所有球员的姓名和分数,然后是平均分数,最后,显示得分低于平均水平的球员。除了最后一件作品,我已经设法完成了所有这些,显示低于平均分数。我有点不确定如何去做。在我的 DesplayBelowAverage 函数中,我试图让它读取当前玩家的分数并将其与平均值进行比较,看看是否应该将其打印为低于平均分的分数,但它似乎无法识别我创建的 averageScore 值在 CalculateAverageScores 函数中。这是我的代码:

#include <iostream>
#include <string>

using namespace std;

int InputData(string [], int [], int);
int CalculateAverageScores(int [], int);
void DisplayPlayerData(string [], int [], int);
void DisplayBelowAverage(string [], int [], int);


void main()

    string playerNames[100];
    int scores[100];


    int sizeOfArray = sizeof(scores);
    int sizeOfEachElement = sizeof(scores[0]);
    int numberOfElements = sizeOfArray / sizeOfEachElement;

    cout << numberOfElements << endl;

    int numberEntered = InputData(playerNames, scores, numberOfElements);

    DisplayPlayerData(playerNames, scores, numberEntered);

    CalculateAverageScores(scores, numberEntered);


    cin.ignore();
    cin.get();


int InputData(string playerNames[], int scores[], int size)

    int index;  

    for (index = 0; index < size; index++)
    
        cout << "Enter Player Name (Q to quit): ";
        getline(cin, playerNames[index]);
        if (playerNames[index] == "Q")
        
            break;
        

        cout << "Enter score for " << playerNames[index] << ": ";
        cin >> scores[index];
        cin.ignore();
    

    return index;



void DisplayPlayerData(string playerNames[], int scores[], int size)

    int index;

    cout << "Name     Score" << endl;

    for (index = 0; index < size; index++)
           
        cout << playerNames[index] << "     " << scores[index] << endl;     
    


int CalculateAverageScores(int scores[], int size)

    int index;
    int totalScore = 0;
    int averageScore = 0;

    for (index = 0; index < size; index++)
           
        totalScore = (totalScore + scores[index]);              
    
    averageScore = totalScore / size;
    cout << "Average Score: " << averageScore;

    return index;


void DisplayBelowAverage(string playerNames[], int scores[], int size)

    int index;

    cout << "Players who scored below average" << endl;
    cout << "Name     Score" << endl;

    for (index = 0; index < size; index++)
           
        if(scores[index] < averageScore)
        
            cout << playerNames[index] << "     " << scores[index] << endl;
        
    

【问题讨论】:

【参考方案1】:

您正在计算 CalculateAverageScore 中的 averageScore 变量,并且它仅是该函数的本地变量,因此 DisplayBelowAverage 不知道 averageScore 的值。这就是你的逻辑不起作用的原因。

为了解决这个问题,有两种选择:

    averageScore 声明为全局变量(尽管不建议使用全局变量)

    averageScore 作为参数传递给DisplayBelowAverage。这是一个更好的方法。所以你应该做的是返回你在CalculateAverageScore 中计算的平均分数并将其存储在某个变量中,然后将其作为参数传递给DisplayBelowAverage 函数。

希望对你有帮助

【讨论】:

乐于助人,希望您使用的是第二种方法

以上是关于在球员计分计划中显示低于平均分的主要内容,如果未能解决你的问题,请参考以下文章

同一份问卷的题项计分点数不同,比如有两点计分、四点、五点,如何来统计?算不同维度的总分和平均分?

如何使用 SQL 分析函数选择工资低于部门平均水平的员工?

C语言编程打印出所有低于平均分的分数

C语言试题十二之m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。

按属性对 Listview 中的项目进行排序

获得低于科目平均分的平均分