C言語で4x5の二次元配列をファイルに書き出し、そのファイルの二次元配列よ読み込み、各行の最大値を書きだしたいのですが、うまく表示されません。
原因がわからないので、教えていただけましたら幸いです。
よろしくおねがいします。
表示された値
-858993460
-858993460
-858993460
-858993460
C
1#define _CRT_SECURE_NO_WARNINGS 2#include<stdio.h> 3#include<math.h> 4 5 6int main(void) { 7 8 int a[4][5] = { {80,75,60,95,76}, 9 {44,59,56,46,28}, 10 {88,67,98,77,75}, 11 {48,86,79,87,76} }; 12 int row, col; 13 14 FILE* pF; 15 pF = fopen("Ass_13.txt", "w"); 16 for (row = 0; row < 4; row++) { 17 for (col = 0; col < 5; col++) { 18 fprintf(pF, "%d\t", a[row][col]); 19 } 20 fprintf(pF, "\n"); 21 } 22 23 fclose(pF); 24 25 FILE* Pf; 26 int num[4][5], i, j, max[5]; 27 Pf = fopen("Ass_13.txt", "r"); 28 29 for (i = 0; i < 4; i++) { 30 for (j = 0; j < 5; j++) { 31 fscanf(Pf, "%d", &num[i][j]); 32 } 33 } 34 for (i = 0; i < 4; i++) { 35 for (j = 0; j < 5; j++) { 36 printf("%d\t", num[i][j]); 37 } 38 printf("\n"); 39 } 40 for (i = 0; i < 4; i++) { 41 for (j = 0; j < 5; j++) { 42 if (i == 0) { 43 max[j] = num[i][j]; 44 } 45 else if (num[i][j] > max[j]) { 46 max[j] = num[i][j]; 47 } 48 printf("%d\n", max[j]); 49 } 50 51 } 52 53 fclose(Pf); 54 55 return 0; 56} 57
結果だけでなく、途中経過も提示してください
どういうことですか?
for (i = 0; i < 4; i++) {
for (j = 0; j < 5; j++) {
printf("%d\t", num[i][j]);
}
printf("\n");
}
これが出力されてるはずですが
そこは問題なかったので表示しませんでした。
すみません。
最大値を求めるのは 各行? 各列? どっち?
各行ならコタエは4つのはず。
だから、それも含めて提示しましょう
というか、実行して出る画面をそのままコピペしてください。
とてもじゃないけど、実行してる結果だと思えないものを出されても、答えようがないですよ
質問にある4x5の二次元配列とは4行5列を表していて、出力したいのは行ごとの最大値ではないのですか?pepperleafさんの回答に、できました、とありますが、本当に期待通りの最大値が出力されていますか?
回答3件
あなたの回答
tips
プレビュー