- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:キーボードから10人分の点数を格納する配列を用意し、平均点および平均点)
10人分の点数を格納する配列を用意し、平均点および平均点以上の人数と番号を表示するプログラムで、うまく表示されない理由は?
このQ&Aのポイント
- Javaのプログラムで10人分の点数を入力し、平均点および平均点以上の人数と番号を表示するが、うまく表示されない理由を教えてください。
- Javaのプログラムで10人分の点数を入力し、平均点および平均点以上の人数と番号を表示するが、番号と人数が正しく表示されない理由を教えてください。
- Javaのプログラムで10人分の点数を入力し、平均点および平均点以上の人数と番号を表示するが、出力が正しくない理由を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ループの1順でなにが行われるのか 変数が表している値はなにか といったところを、よく考えなおしてください。 紙とエンピツで手計算する時にどういう順番でやるかを考えてみるのも手です。 > avg = (double)sum/10; この時点では、sumには「今まで入力した人数分の合計」が入っています。 10人になるのは最後の1回だけです。それ以外は10で割っても平均にはなりません。 また、それまでの人数(=i+1)で割っても、「それまでの人数分の平均」であって「10人分の平均」ではありません。 > if(avg<=count) > count++; avgは「平均値」、countは「平均値以上の人の人数」ですよね? この2つを比較する意味ってありますか? また、上に書いたように、このループでは「全員の平均点」は計算できないのですから、「平均点以上かどうか」なんて判定できませんよね。 >if(i>=avg) >i++; これはさらに意図が不明です。 iはループで何番目かを表わすのに使っているようですが、それと平均値を比較する意図がわからないですし、判定結果によってはiを増やそうとするのもわかりません。 おそらく、平均が10以上になっているので i++が実行されず、1番から10番まで表示されたのでしょう。平均を5点くらいになるように入力してみてください。番号が飛び飛びになるはずです