練習 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 上でインデントを自動で揃える作業をやっていない).
← [ 練習3 (p0603a.c) ]
ミスが無いことを確認したら次の問題へ → [ 練習5 (p0605a.c) ]