C ++单个元素的数组增量

时间:2016-05-06 04:04:10

标签: c++ arrays

您好我正在尝试使用数组打印下表 第一列包含电影的评级,第二列包含评级为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没有显示任何错误。有人可以解释它出错的地方吗?

1 个答案:

答案 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,您似乎也有点不一致,并且您没有对输入进行验证,但这些问题相对较小。