練習 [6] 前半の復習(4/5)

練習 4(提出プログラム名:p0604a.c)

以下の例のように 1 個の整数 n と n 個の実数を読み込み,その正規化(min-max スケーリング)を行って出力できるプログラムを p0604a.c として作りなさい.
なお,このプログラムでは n 個の実数を長さ SIZE の double 配列に格納するものとする.
SIZE マクロとし,16 と定義せよ.
正規化後の実数では小数点以下第 2 位までを出力することとする.

なお,この問題では n は 2 以上 SIZE 以下の整数であると仮定してプログラムを作ってよい.

【この問題での正規化(min-max スケーリング)のやり方】
いま,n 個の実数データの中で最小値を min,最大値を max とおく.

そして,ある実数データ x を
   (x – min)/(max – min)
という値に置き換えることを正規化と定義する.
こうすることですべてのデータが閉区間 [0,1] に収まるようになる.

ただし,min = max の場合はこれを定義できないことになるが,
この問題では min と max は値が異なると仮定してプログラムを作ってよい.

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
データの個数を入力してください:5
5 個の実数を入力してください:
-2 -1 0 1 2
正規化後のデータは以下の通り:
x[0] = 0.00
x[1] = 0.25
x[2] = 0.50
x[3] = 0.75
x[4] = 1.00
  • 【プログラムの実行例】(その2)赤字は実行時にキーボードから入力する内容
データの個数を入力してください:3
3 個の実数を入力してください:
8.5 5.5 7.5
正規化後のデータは以下の通り:
x[0] = 1.00
x[1] = 0.00
x[2] = 0.67
  • 【プログラムの実行例】(その3)赤字は実行時にキーボードから入力する内容
データの個数を入力してください:2
2 個の実数を入力してください:
12.34 -67.89
正規化後のデータは以下の通り:
x[0] = 1.00
x[1] = 0.00>

【過去にあったミス(減点となり,やり直しを命じられる)】
3種類の実行例を確認せずに提出してしまっている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


ミスが無いことを確認したら次の問題へ → [ 練習5 (p0605a.c) ]