最大/最小値を計算する際、データを読み取る度に値を比較し、比較した値が大きい/小さい場合に値を格納する変数(maxv/minv)が必要となりますが、この変数の初期化には注意が必要です。
読み取るデータの全ての値より大きい/小さい場合には、正しく最大値/最小値が計算されませんので、想定されるデータの値より大きい/小さい値にて初期化する必要があります。
例題では、変数タイプに合わせた最大値/最小値(float.h: DBL_MAX)にて初期化を行なっています。
また、データを比較する際、(a < minv) や (a > maxv) のように直接値を計算すると、ただしく大小の比較が行われない場合があります。
そこで、下記のように差分値が 0 より大きいか、小さいかを調べることにより改善を図っています。
実行結果
0 件のコメント:
コメントを投稿