- ベストアンサー
C言語で最大値と最小値を求めて表示するプログラム
- C言語を学習中の方へ、最大値と最小値を求めて表示するプログラムについて詳しく教えてください。
- このプログラムでは、0~100の範囲で入力された複数の数値の中から最大値と最小値を求めて表示します。
- 特にプログラムの最後のwhile文で最大値と最小値の判定をしていますが、具体的にどのような計算をしているのでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>while (array[i] != -1) { >if (array[i] > *max) *max = array[i]; >if (array[i] < *min) *min = array[i]; >i++; 手でコードを追いかけていくのが上達への近道だとは思いますが…。 今回は、データの範囲が0~100と決まっていますので、 まずは、仮の最大値として下限の0を、仮の最小値として上限の100を、 それぞれセットしています。 そして、配列の中身を、その時点での最大値や最小値と比べて、 データの方がその時点での最大値よりも大きければ最大値の値を更新し、 データの方がその時点での最小値よりも小さければ最小値の値を更新する、 というアルゴリズムです。 ループを脱出した(つまり、すべてのデータをチェックし終わった)段階で 変数maxやminに入っている値が、(仮ではない)真の最大値や最小値となります。
その他の回答 (3)
- TreatMeGently
- ベストアンサー率18% (27/147)
2です。 初期化の値が逆です。 間違えました。 minが101でmaxが-1です。ごめんなさい。
お礼
ご回答いただき、ありがとうございました。
- Tacosan
- ベストアンサー率23% (3656/15482)
変な値に初期化しても予期しない結果になりますよね>#2. それにしても, 範囲外の数値を入力したときのチェックをしないのはなぜだろう. ヒントの「最小値を探すには、最大値を記憶した変数との比較を繰り返せば良い。」も明らかにおかしいし....
お礼
ご回答いただき、ありがとうございました。
- TreatMeGently
- ベストアンサー率18% (27/147)
maxとminを初期化していないと予期しない結果になります。 *max = 101; *min = -1; >while (array[i] != -1) { >if (array[i] > *max) *max = array[i]; >if (array[i] < *min) *min = array[i]; >i++;
お礼
ご回答いただき、ありがとうございました。
お礼
ご回答いただき、ありがとうございました。