2011年9月25日日曜日

最大値、最小値の計算例

ファイルからデータを読み取り、データの最大値、最小値を計算する例です。

最大/最小値を計算する際、データを読み取る度に値を比較し、比較した値が大きい/小さい場合に値を格納する変数(maxv/minv)が必要となりますが、この変数の初期化には注意が必要です。
読み取るデータの全ての値より大きい/小さい場合には、正しく最大値/最小値が計算されませんので、想定されるデータの値より大きい/小さい値にて初期化する必要があります。
例題では、変数タイプに合わせた最大値/最小値(float.h: DBL_MAX)にて初期化を行なっています。

また、データを比較する際、(a < minv) や (a > maxv) のように直接値を計算すると、ただしく大小の比較が行われない場合があります。
そこで、下記のように差分値が 0 より大きいか、小さいかを調べることにより改善を図っています。

実行結果

0 件のコメント:

コメントを投稿