您好我正在尝试使用数组打印下表 第一列包含电影的评级,第二列包含评级为1,2,3等的人数。
i[rating] sum_rating[number of people who have rated 1, 2, 3 and so on]
1 3
2 2
3 4
4 1
5 6
继承人到目前为止我所尝试过的事情
#include <iostream>
using namespace std;
int main() {
int reviewNum, i, j;
int rating[250], sum_rating[250];
cout << "Enter the number of reviews" << endl;
cin >> reviewNum;
cout << "Enter ratings " << endl;
for (i = 0; i < reviewNum; i++ ) {
cin>> rating[i];
}
for ( i = 0; i <= 5; i++)
sum_rating[i] = 0;
for (int i=0; i< reviewNum; i++){
for(int j=0; j <=5; j++){
if(rating[i]==j){
sum_rating[i] += 1;
}
}
}
cout << "Rating \t Number of people \n";
for ( i = 0; i <= 5; i++)
cout << " " << i+1 << " \t\t" << sum_rating[i] << endl;
return 0;
}
我以某种方式获得此程序的错误输出,并且我的ide没有显示任何错误。有人可以解释它出错的地方吗?
答案 0 :(得分:0)
您的主要错误发生在您计算统计信息的循环中:
for (int i=0; i< reviewNum; i++){
for(int j=0; j <=5; j++){
if(rating[i]==j){
sum_rating[i] += 1;
}
}
}
使用您提供的结构和索引,您应该增加sum_rating[j]
,而不是sum_rating[i]
。当然,问题的一部分是你做得太复杂了。通过简单地执行此操作,最好完全避免内循环:
for (int i=0; i< reviewNum; i++){
sum_rating[rating[i]] += 1;
}
对于评级是从1还是1还是从1到6,您似乎也有点不一致,并且您没有对输入进行验证,但这些问题相对较小。