課題 [5] 配列(2/9)

問 2(提出プログラム名:ex0502a.c)

次の仕様のプログラムを ex0502a.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 (ex0503a.c) ]