int变量不能在c ++上重置?

时间:2015-06-01 22:14:22

标签: c++ arrays

所以,我的程序应该接收测试输入,如:

3
4
1
2

其中单值线( n )是位于以下 n 条目中的NxN矩阵的大小,如上所示。如果n = 0,则程序停止。输出必须是矩阵列中的最大总和。所以我希望这样的输出:

#include <iostream>
using namespace std;

int pop = 0;

int main() {
    int n, i, j, k;
    cin >> n;
    while (n!=0) {
        int alunos[n]={0};
        pop = 0;
        for (i=0;i<n;i++) {
            int array[n]={0};
            for (j=0;j<n;j++) {
                cin >> array[j];
                if (array[j]==1) alunos[j]++;
            }  
        }
        for (k=0;k<n;k++) {
            if(alunos[k]>pop) pop = alunos[k];
        }
        cout << pop << endl;
        cin >> n;
    }
    return 0;
}

经过大量的努力和浪费时间,我设法正确地获得了第一个输出,但我注意到以下有时总结并建议某些变量没有被重置。这是我的代码:

pop

注意到我每次输出新的n时输出alunos[n](最大总和)并将其重置为0。 while是一个包含每列总和的数组(也在每个array[n]循环上重置),3 5 6 8 只是一个用于读取每行输入的辅助数组。我的输出是:

{{1}}

提前致谢!

1 个答案:

答案 0 :(得分:2)

cannot use initializers with variable length arrays。切换到某种容器:

std::vector<int> alunos(n);

或手动用零填充数组:

int alunos[n];
std::fill(alunos, alunos+n, 0);

另外,忽略错误是不健康的。不要这样做。