質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

696閲覧

C言語でファイルから各行の最大値を出す。

gaku_1110

総合スコア6

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

1クリップ

投稿2021/06/23 10:29

編集2021/06/23 11:17

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/06/23 10:48

結果だけでなく、途中経過も提示してください
gaku_1110

2021/06/23 10:49

どういうことですか?
y_waiwai

2021/06/23 10:52

for (i = 0; i < 4; i++) { for (j = 0; j < 5; j++) { printf("%d\t", num[i][j]); } printf("\n"); } これが出力されてるはずですが
gaku_1110

2021/06/23 11:14

そこは問題なかったので表示しませんでした。 すみません。
episteme

2021/06/23 11:32 編集

最大値を求めるのは 各行? 各列? どっち? 各行ならコタエは4つのはず。
y_waiwai

2021/06/23 11:38

だから、それも含めて提示しましょう
y_waiwai

2021/06/23 11:42

というか、実行して出る画面をそのままコピペしてください。 とてもじゃないけど、実行してる結果だと思えないものを出されても、答えようがないですよ
Crimson_Tide

2021/06/23 12:03

質問にある4x5の二次元配列とは4行5列を表していて、出力したいのは行ごとの最大値ではないのですか?pepperleafさんの回答に、できました、とありますが、本当に期待通りの最大値が出力されていますか?
guest

回答3

0

各行の最大値が求めたいもの、なのね?

C

1#define _CRT_SECURE_NO_WARNINGS 2#include<stdio.h> 3 4int main(void) { 5 6 int num[4][5] = { 7 {80,75,60,95,76}, 8 {44,59,56,46,28}, 9 {88,67,98,77,75}, 10 {48,86,79,87,76} 11 }; 12 int row, col; 13 14 for (row = 0; row < 4; ++row ) { 15 int max; 16 printf("%d : ", row); 17 for (col = 0; col < 5; ++col) { 18 printf("%d ", num[row][col]); 19 if (col == 0) { 20 max = num[row][col]; 21 } 22 else if (num[row][col] > max) { 23 max = num[row][col]; 24 } 25 } 26 printf(": max = %d\n", max); 27 } 28 29 return 0; 30}

投稿2021/06/23 22:30

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

出力の仕方が間違えてます。

最後の二重ループが終わったところで、

C

1 for (j = 0; j < 5; j++) 2 printf("%d\n", max[j]);

二重ループ内の出力(printf("%d\n", max[j]);)は削除。

投稿2021/06/23 11:23

pepperleaf

総合スコア6385

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gaku_1110

2021/06/23 11:27

出来ました!ありがとうございます!!
kaina

2021/06/23 13:17

何故上手くいかなかったのか?何故上手くいったのか? その分析を行わないと時間の無駄ですよ。
guest

0

C

1 for (i = 0; i < 4; i++) { 2 for (j = 0; j < 5; j++) { 3 if (i == 0) { 4 max[j] = num[i][j]; 5 } 6 else if (num[i][j] > max[j]) { 7 max[j] = num[i][j]; 8 } 9 } // このloopを抜けたとき、j = 5 10 printf("%d\n", max[j]); // 残念、max[5] は存在しない(範囲外)。 11 }

投稿2021/06/23 11:04

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gaku_1110

2021/06/23 11:12

jのループに入れたところ、20個の値が表示されました...。 なぜなんでしょうか?
episteme

2021/06/23 11:15

i-loop が4回, j-loop が5回 回るんだから 全部で 4x5 = 20 回出力するでしょ。 わかりませんか?
gaku_1110

2021/06/23 11:22

最大値を表示するためのif関数が機能していないのでしょうか?
episteme

2021/06/23 11:24

「最大値を表示するためのif関数」ってなんですか? - if は関数ではありません - if に表示する機能はありません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問