問 3(提出プログラム名:ex0603.c)
次の仕様のプログラムを ex0603.c として作りなさい.
(1)まず,整数 n を読み込む.
(2)続いて,整数を n 個読み込み,それらを配列へ格納する.
(3)最後に,配列内の整数の中の最大値と最小値を出力する.
ただし,
● 用意する配列の長さはマクロ SIZE で指定すること.
● マクロ SIZE の値は 8 と定義すること.
● マクロの定義部分(#define SIZE 8)以外では 8 や 7 と直接書かないこと.
● 最初に読み込む n は,1 以上 SIZE 以下の整数であると仮定してプログラムを作ってよい.
【最大値と最小値を求める定番の手順(アルゴリズム)】
ここでは配列名を a とし,最大値を max,最小値を min として求めるものとする.
(3) の処理内容は以下のように行う(配列への整数の格納がすべて完了した後に行うこと)
① 配列内の先頭の要素を仮の最大値・最小値とおく:
max = a[0];
min = a[0];
② for ( i = 0; i < n; i++ ) { ... } として次の③と④を繰り返す:
③ もし a[i] > max ならば(より大きな値が見つかったので) max = a[i]; とする.
④ もし a[i] < min ならば(より小さな値が見つかったので)min = a[i]; とする.
⑤ 最後に max と min を出力する.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
データ数 n を入力してください:8 8 個の整数を入力してください:⏎ 1 2 3 4 5 6 7 -1 最大値 = 7⏎ 最小値 = -1⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
データ数 n を入力してください:3 3 個の整数を入力してください:⏎ 2 2 2 最大値 = 2⏎ 最小値 = 2⏎
- 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
データ数 n を入力してください:1 1 個の整数を入力してください:⏎ 3 最大値 = 3⏎ 最小値 = 3⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
(例1)最大値と最小値が逆に出力されている.
(例2)出力される最大値・最小値が違っている.
■ 上に書かれている手順を見落としていて,無駄に複雑なプログラムになっていたり,
手順が間違っていたりする.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
以上の 3 問は明日(5/17)の 16時までに提出を済ませてください.
(ex0601.c ~ ex0603.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.なお,コンパイルエラーや無限ループが含まれる場合は総合評価を 0 点とします.
提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.
← [ 問 1 (ex0601.c) ]
← [ 問 2 (ex0602.c) ]
次のページ以降に問 4 ~問 9 があります.
問 4 以降を明日の16時までに早期提出した場合は加点の対象とします
(一部のみを早期提出してもよいです).
※なお,明らかに間違っている(まともに動かない)プログラムを早期提出するのは絶対にやめてください.不正に加点を得ようとした行為と見なして減点とします.
次の問題へ → [ 問4 (ex0604.c) ]