質問: array[i]; } } } int main(void) { int i, n, array[NUM], max, min; do { scanf("%d\n", &n); scanf("%d",&array[i]); i++; } while (n != 0); max_and_min(array, n, &max, &min); printf("%d %d\n", max, min); return 0; } ``` ### 試したこと 関数max_and_min内でforをなくしてwhile文も考えたのですが、どのように使えばいいか分かりませんでした。 ### 補足情報(FW/ツールのバージョンなど) ツールのバージョンはすみません、分かりませんでした。 整数の個数と整数は全て自分で入力したものを読み込み、個数が0と入力されたら終了です。 具体例 (入力)↓ 5 -80 90 130 7 0 8 -14 10 5 7 16 24 36 -47 3 -34 -16 7 0 (出力)↓ 130 -80 36 -47 7 -34 長々と質問してしまい、すみません。 まだプログラミングを始めたばかりで、正直何度プログラムを書きなおしてもできず困っています。 質問に回答していただけると幸いです。よろしくおねがいします。
回答: > > > ``` > int i, n, arrayNUM], max, min; > do { > scanf("%d\n", &n); > scanf("%d",&array[i]); > i++; > } while (n != 0); > ``` > > iが初期化されていません。宣言時に0に初期化すると良いでしょう。 また、n(データ数)の入力はループ前に受け取るべきです。 そうすれば次のように巡回できますね。 ``` for(int i = 0; i < n; ++i) { scanf("%d", &array[i]); } ``` nが大きすぎる際にプログラムを終了させるのも簡単です。 コードの書き方について teratailには、上記のようにコードを見やすく表示する機能があります。 質問編集画面を開き、コードを選択した状態でボタンを押してください。 ![C