• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語 最大値と最小値を求めて表示するプログラム)

C言語で最大値と最小値を求めて表示するプログラム

このQ&Aのポイント
  • C言語を学習中の方へ、最大値と最小値を求めて表示するプログラムについて詳しく教えてください。
  • このプログラムでは、0~100の範囲で入力された複数の数値の中から最大値と最小値を求めて表示します。
  • 特にプログラムの最後のwhile文で最大値と最小値の判定をしていますが、具体的にどのような計算をしているのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

>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に入っている値が、(仮ではない)真の最大値や最小値となります。

501xx
質問者

お礼

ご回答いただき、ありがとうございました。

その他の回答 (3)

回答No.4

2です。 初期化の値が逆です。 間違えました。 minが101でmaxが-1です。ごめんなさい。

501xx
質問者

お礼

ご回答いただき、ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

変な値に初期化しても予期しない結果になりますよね>#2. それにしても, 範囲外の数値を入力したときのチェックをしないのはなぜだろう. ヒントの「最小値を探すには、最大値を記憶した変数との比較を繰り返せば良い。」も明らかにおかしいし....

501xx
質問者

お礼

ご回答いただき、ありがとうございました。

回答No.2

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++;

501xx
質問者

お礼

ご回答いただき、ありがとうございました。

関連するQ&A

専門家に質問してみよう