- ベストアンサー
平均点の計算と判定について
- for文では10人分の平均点ではなく、それまでの人数分の平均点を計算します。
- avgとcountの比較には意味があります。avgは平均値、countは平均値以上の人の人数を表します。
- 全員の平均点ではなく、平均点以上かどうかの判定ができないので、ループ内での判定は意味がありません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
http://okwave.jp/qa/q6303484.html の続きですよね?そういうのは前の回答の補足とかでやってください。 新しい質問にしないように。 > for文では10人分の平均点ではないのですか?そうでないのなら、ループ分の}から10人分の平均値を出したらいいのですか? 現在のプログラムでは次のようになります。 ・i=0のとき→1番の点数は(例えば)47点→sum=0+47で47→avgはsum/10で4.7→点数が平均以上か判定(してるつもり?) ・i=1のとき→2番の点数は(例えば)53点→sum=0+53で100→avgはsum/10で10→点数が平均以上か判定(してるつもり?) では、この時点で「平均点は10だから2番は平均点以上だ」と言えますか? そもそも10点というのは平均点として正しいでしょうか? また、avgを現在までの平均と修正したとしも ・i=0のとき→1番の点数は(例えば)47点→sum=0+47で47→avgはsum/1で47→点数が平均以上か判定(してるつもり?) ・i=1のとき→2番の点数は(例えば)53点→sum=47+53で100→avgはsum/2で50→点数が平均以上か判定(してるつもり?) では、この時点で「平均点は50だから2番は平均点以上だ」と言えますか? このあとの8人全員が90点以上だったら、平均点は50よりずっと大きくなりますよね? 前回も書いたように、手計算でやるときのことをよく考えてみてください。こうなりませんか? ・(手計算では特に書かないけど)総得点の初期値は0 ・1番目の点数を総得点に加える ・2番目の点数を総得点に加える ...以下人数分繰り返す。 ・全員の総得点を人数で割ると平均点になる 上の手計算で、どこからどこまでが繰り返しになってるか、よく考えてみてください。 それは、そのままプログラムでのforループでの処理になります。 もしかして、for文の動作を理解できてない、ってことは無いですか? > (略)とはどういう意味ですか? このif文を日本語にしてみましょう 『もし 「平均点」が「(前の番号までの)平均点以上の人の人数」 以下だったら、「平均点以上の人の人数」を増やす。』 具体的な数字を入れてみましょう 『もし 「3点」が「5人」 以下だったら、「6人」に変更する。』 (会話では 「3点取った人が」を「3点が」という省略している場合もありますが、上の文ではそういう省略は一切無しです) これらの文に何の違和感も感じないようだと、日本語やりなおしてください、となってしまうのですが。 これも手計算するなら、こうなりますよね ・(手計算では特に書かないけど)人数の初期値は0 ・1番目の点数と平均点を比べて、平均点以上だったら 人数+1 ・2番目の点数と平均点を比べて、平均点以上だったら 人数+1 ...以下人数分繰り返す。 ・全員調べたら、最終的な人数が「平均点以上の人数」 比較したいのは何と何か、それが入っているのはどの変数なのか? それをよく考えてください。 後半は今回の前半に書いた通り。比較対象の平均点が求まってなければ、比較そのものができないってこと。 「これより大きいかどうか教えてください」と言われても「これ」がなんだかわからなければ答えられないですよね?
その他の回答 (1)
- osamuy
- ベストアンサー率42% (1231/2878)
http://okwave.jp/qa/q6303484.html aw345さん「キーボードから10人分の点数を格納する配列を用意し、平均点および平均点...」への回答への補足要求っぽいので、そちらに続けたほうが良いかと。 >for文では10人分の平均点ではないのですか?そうでないのなら、ループ分の}から10人分の平均値を出したらいいのですか? ちょっと質問の意図が読み取れないですが、 >sumには「今まで入力した人数分の合計」が入っています。 これはそのとおりかと、aw345さんが書いたコードからはそのようにしか読みとれないかと。 なので、「ループ分の}から10人分の平均値を出したらいいのですか?」というのが、「forループの外にavgを求める式を記述すればよいのか?」という質問なら、YESかと。 >「avgは「平均値」、countは「平均値以上の人の人数」ですよね? これもそのとおりかと。たぶんそういう意図を込めた変数名ですよね。実際そういうメッセージをprintlnしてますし。 平均は、10件分のデータがそろわないと求めることができないので、1件目のデータを入れた時点で平均を利用した比較をしているのがおかしいと指摘しているのかと。 >ループの1順でなにが行われるのか変数が表している値はなにか >といったところを、よく考えなおしてください。 >紙とエンピツで手計算する時にどういう順番でやるかを考えてみるのも手です。 これをやってみたほうがよいかと。一番の勉強になります。