1,何番まで実施したか
4番
2,作成したプログラム
#!/usr/koeki/bin/ruby
#-*-coding:utf-8-*-
total=0
number=1
print"8回分のレポートの合計点と平均点を算出します。\n"
while true
printf("%d回のレポートの点数を記入してください(exit入力で終了)\n",number)
score=gets.chomp!
if score.to_i<0 || score.to_i>8
print"レポートの点数範囲を越えてるよ!\n"
redo
elsif score=="exit"
number=number-1
break
end
total+=score.to_f
if number==8
break
end
number+=1
end
average=total/number
printf("%d回分のレポート合計点は%dです。\n",number,total)
printf("%d回分のレポートの平均点は%.1fです.\n",number,average)
3,プログラムの実施結果
8回分のレポートの合計点と平均点を算出します。
1回のレポートの点数を記入してください(exit入力で終了)
1
2回のレポートの点数を記入してください(exit入力で終了)
1
3回のレポートの点数を記入してください(exit入力で終了)
1
4回のレポートの点数を記入してください(exit入力で終了)
1
5回のレポートの点数を記入してください(exit入力で終了)
1
6回のレポートの点数を記入してください(exit入力で終了)
1
7回のレポートの点数を記入してください(exit入力で終了)
1
8回のレポートの点数を記入してください(exit入力で終了)
1
8回分のレポート合計点は8です。
8回分のレポートの平均点は1.0です.
4,プログラムの説明
今回の作業では初めに平均を出すために数を数えるnumberを用い合計から割り平
均を算出できるようにした。
次にwhile trueを使い繰り返し打ち込めるようにし、そのままだと永遠に続くい
てしまうのでbreakを挿入し「exit」入力して繰り返しを止めるようにした。し
かし、そのままだと平均を出す際にnumberの値が1多くなってしまうのでifの条
件にnumber-1をいれて平均が正しく算出されるようにした。
3番では、8回目にbreakを使い強制的に繰り返しを終了させるためnumber==8で8
回目を示し、breakを次にいれることで8回目で終了するようにした。
4番においては、規定の数以上以下を入力させないためにredoを用いた。
得点の定義であるscore.to_iが0以下にさせないために<0を使い、8以上にさせな
いために>8を条件にしてredoでもう1度入力させるようにした。
このif条件の中に2番目で用いたnumber-1をこの4番でも反映させ、redoで再度入
力する時でもnumberの値がズレないようにした。
5,感想
今回の課題は前回の課題と比べて難しいと感じた。プログラムの内容については
授業でやった内容で構成されていたが、プログラムの順序がずれることで正しく
動かないことが今回の課題で身にしみて痛感した。
プログラム自体が処理する順番を自分で正しく入力していこうとこれから頑張り
たい。
6,参考文献
7,添付ファイル、