ここから本文です

c言語 プログラミング 2次元配列 最大値をとるときの要素を表示させるプログラム ...

fig********さん

2012/1/2717:58:23

c言語 プログラミング 2次元配列 最大値をとるときの要素を表示させるプログラム
2次元配列のデータが次のように与えられる。

int x[2][3]={
{15,10,18},
{9,20,15}
}
このとき最大値をとる要素を表示するプログラムを作るにはどうすればよいでしょうか?for文?if文?いろいろ試したんですがチンプンカンプンです。答えは明らかに20をとるx[1][1]なのに。回答よろしくお願いします。

補足kaogei_at_daさん回答ありがとうございます。申し訳ないですが、最大値を表示するのではなく
printfを用いて「最大値をとるのはi行目のj列目です。」と表示したいんですがどうしたらよいですか?
何回も質問して申し訳ありません。

閲覧数:
5,359
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

kao********さん

編集あり2012/1/2808:48:31

二重forループで回せばおっけーです.
値を順番にmaxと比較・更新し,最終的にmaxが保持している値が本当の意味での最大値です.

>補足
なるほど ではこんな感じです

#include <stdio.h>
int main(void)
{
int i, j, max, maxi, maxj, x[2][3]={{15,10,18},{9,20,15}};

for (i=0, max=x[0][0], maxi=0, maxj=0; i<2; i++){//※
for (j=0; j<3; j++){
if (x[i][j] > max){
max = x[i][j];//最大値が更新されるときに
maxi = i;//その時のiと
maxj = j;//jも保存.
}
}
}

printf("最大値%dをとるのは%d行%d列目です。\n", max, maxi, maxj);

return 0;
}

最大値を比較するときに重要なのは配列に格納されている値ですが,最大値を更新するときに,それに追従するようにi, jも保存してやればいいです.

あと,xに格納される値が全て負数だと最大値が初期化時の0になってしまうので※のように変更しました.

質問した人からのコメント

2012/1/28 17:32:21

笑う 「最大値を更新するときに,それに追従するようにi, jも保存してやればいい」ということですか。なるほどー!説明もわかりやすかったです。ありがとうございました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる