2014-10-05 64 views
-2

我应该在图表中显示等级,该等级显示每个间隔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; 
    } 
+0

您是否尝试在调试器中运行代码? – honk 2014-10-05 17:33:55

回答

0

我假定students是阵列grades[]的大小。

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

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

而是该行应为:

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

此问题不会只发生在情况grade[]的大小为1,2,3或5.您只有请参阅该大小的问题,因为输出取决于数组的内容。