在图形中显示成绩

Displaying grades in a graph

本文关键字:显示 图形      更新时间:2023-10-16

Im应该在图表中显示成绩,该图表显示0-10、10-20、20-30等每个区间中的成绩。通过为区间中的每个成绩设置*。我唯一的问题是,当数组grade[]有1、2、3或5个插槽时,它会在0-10间隔中放入一个额外的*。它可以与其他弹药数量的插槽配合使用。

void sort_grades(int grades[],int students) 
    cout << endl << endl;
    cout << " THE GRADES GRAPH"<< endl;
    cout << "=============================="<<endl;
    const int max_grade = 100;
    const int interval=10;
    for (int j = 0; j < max_grade; j+=10)
    {
        cout << j << " - " << (j+interval) << " : ";
        for (int k = 0; k <= students; k++)
        {
            if (j==90 && grades[k] ==(j+interval)  )
            {
                cout<< "*";
            }
            else if (grades[k] < (j+interval) && grades[k] >= j)
            {
                cout<< "*";
            }
        }
        cout << endl;
    }

我假设students是数组grades[]的大小。

在这种情况下,您在以下循环中访问了太多元素:

for (int k = 0; k <= students; k++)

相反,行应该是:

for (int k = 0; k < students; k++)

只有当grade[]的大小为1、2、3或5时,才会出现的问题。您只能看到该大小的问题,因为输出取决于数组的内容。