Я должен отображать оценки на графике, который показывает, сколько оценок в каждом интервале 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. Вы только увидеть проблема для этих размеров, потому что вывод зависит от содержимого массива.