課題 [6] 配列(3/9)

問 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 点とします.
提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.


次のページ以降に問 4 ~問 9 があります.
問 4 以降を明日の16時までに早期提出した場合は加点の対象とします
(一部のみを早期提出してもよいです).
※なお,明らかに間違っている(まともに動かない)プログラムを早期提出するのは絶対にやめてください.不正に加点を得ようとした行為と見なして減点とします.

次の問題へ → [ 問4 (ex0604.c) ]