所以,我的程序应该接收测试输入,如:
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}}
提前致谢!
答案 0 :(得分:2)
你cannot use initializers with variable length arrays。切换到某种容器:
std::vector<int> alunos(n);
或手动用零填充数组:
int alunos[n];
std::fill(alunos, alunos+n, 0);
另外,忽略错误是不健康的。不要这样做。