0
工作,我试图做一个程序,它会改变每个阵列列第一和最大的数字之间的所有元素为0。 的程序工作,但我得到错误的结果。不计算在多维数组
这是输入文件:
3 5
2 3 5
1 2 4
4 1 3
6 1 2
5 8 1
这是结果文件:
2 0 0 6 5
3 0 0 0 8
5 4 3 2 1
,但我期待的结果是这样的:
2 3 5
0 0 4
0 0 3
6 0 2
5 8 1
我不是确定如果我的代码读取/打印错误的信息或我不理解多维数组(我是编码初学者)。任何帮助将不胜感激,谢谢。
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int n, m, Z[100][100];
ifstream fr("input.txt");
ofstream fd("output.txt");
fr >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
fr >> Z[i][j];
for (int i = 0; i < n; i++) {
int max = Z[0][0];
int NR = 0;
for (int j = 0; j < m; j++) {
if (Z[i][j] > max) {
max = Z[i][j];
NR = j;
}
}
for (int j = 1; j < NR; j++) {
Z[i][j] = 0;
}
}
for (int i = 0; i < n; i++) {
fd << endl;
for (int j = 0; j < m; j++)
fd << Z[i][j] << " ";
}
return 0;
}
这仅固定在印刷问题,但现在的代码不改变第一和最大阵列的collums之间的号码为0。·试图交换n,其中米,但它不会改变的结果。任何原因为什么这不起作用? – Duona
@Duona尝试用'NR = i'交换'NR = j',并用下面的for循环进行同样的操作。 – Stargateur