2014-10-05 90 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.您只有請參閱該大小的問題,因爲輸出取決於數組的內容。