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;
}
これは印刷の問題のみを修正しましたが、最初の配列のcollumと最大配列のcollumの間の数値は0に変更されません。mとnを入れ替えようとしましたが、結果は変わりません。それがうまくいかない理由は何ですか? – Duona
@Duona 'NR = j'を' NR = i'で置き換えて、foを以下のforループと入れ替えようとします。 – Stargateur