2014-10-05 2 views
-2

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; 
    } 
+0

디버거에서 코드를 실행하려고 시도 했습니까? – honk

답변

0

나는 students 배열 grades[]의 크기가 있다고 가정합니다. 이 경우

다음 루프에서 너무 많은 요소에 액세스 :

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

가 대신 선 읽어야합니다

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

이 문제는 하지 만의 경우 어디에서 발생할 않습니다 grade[]의 크기는 1, 2, 3 또는 5입니다. 출력은 배열의 내용에 따라 다르기 때문에 해당 크기의 문제를 참조하십시오.