我必须做的问题如下。
编写一个程序,输出作业的学生成绩直方图。该程序应将每个学生的成绩输入为整数并存储在向量中。应输入成绩,直到用户为成绩输入-1。然后,程序应扫描向量并计算直方图,等级的最小值为0,但您的程序应确定用户输入的最大值。使用动态数组来存储直方图。将直方图输出到控制台。
添加了一个示例: 输入 20 三十 4 20 三十 三十 -1 产量 4的数量:1 20的数量:2 30的数量:3
到目前为止我编码的内容如下:#include <iostream>
#include <vector>
using namespace std;
void histogram(vector<int> input);
int main()
{
int i=0;
int value;
vector<int> grades;
while(i>=0)
{
cout<<"Enter a grade for the student: ";
cin>>value;
grades.push_back(value);
if((grades[i])==(-1))
{
break;
}
i++;
}
histogram(grades);
}
void histogram(vector<int> input)
{
}
我确实为直方图功能尝试了一些东西,但它以一种可怕的方式失败了。我不知道如何处理这个直方图的事情。
答案 0 :(得分:0)
不知道这是否正确,但我这样做了。
void histogram(vector<int> input)
{
// declaration of a new array
int aGrades[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
for (std::vector<int>::iterator it = input.begin() ; it != input.end(); ++it)
{
int number = *it;
//cout << number << endl;
aGrades[number] += 1;
//int *it; //works fine
}
for (int gradeLoop = 0; gradeLoop < 100; gradeLoop++)
{
if(aGrades[gradeLoop] > 0 )
{
cout << "Number of " << gradeLoop << "'s: " << aGrades[gradeLoop] << endl;
}
}
}