1.5番
2.作成したプログラム
#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-
total = 0
number = 1
print"8回のレポートの得点を求めます。\n"
while true
printf("%d回目のレポートの得点を入力してください\n",number)
score = gets.chomp!
if score == "exit"
number -= 1
break
elsif number == 8
total += score.to_i
break
elsif score.to_i < 0
print"点数はマイナスにならない。再入力\n"
redo
elsif score.to_i > 8
print"本当に8点以上ですか?\n"
print"Yesの場合は1を、Noの場合は2を入力してください\n"
answer = gets.chomp!.to_i
if answer == 1
print"入力を続けてください\n"
else
print"再入力してください\n"
redo
end
end
total += score.to_i
number += 1
#p total , number
end
average = total / number
printf("合計得点は%.1f点です。\n",total)
printf("平均は%.1f点です。\n",average)
3.プログラムの実行結果
sime{c118xxx}% ./report3.rb [~/program]
8回のレポートの得点を求めます。
1回目のレポートの得点を入力してください
9
本当に8点以上ですか?
Yesの場合は1を、Noの場合は2を入力してください
1
入力を続けてください
2回目のレポートの得点を入力してください
9
本当に8点以上ですか?
Yesの場合は1を、Noの場合は2を入力してください
2
再入力してください
2回目のレポートの得点を入力してください
4
3回目のレポートの得点を入力してください
3
4回目のレポートの得点を入力してください
6
5回目のレポートの得点を入力してください
5
6回目のレポートの得点を入力してください
4
7回目のレポートの得点を入力してください
4
8回目のレポートの得点を入力してください
exit
合計得点は35.0点です。
平均は5.0点です。
4.プログラムの説明
条件を満たしているものを無限回繰り返すwhile tureを用いたプログラムになっ
ている。ifを用いてexitのように文字を入力するとbreakできる仕組みになって
いる。今回は最大8回分のレポートの点数を入力するため、条件elsifで8回目で
終えるようになっている。
8点よりも高い点数になった場合、本当にそうなのか質問する文章をいれた。も
う一度gets.chomp!を使って文字を入力するようにした。点数がマイナスになる
ときも含め、redoで再入力させることができる。
5.感想
どこでbreakやendをいれるのかよく理解できていなかった。whileを利用するの
は前回の復習となっていた気がする。まだわかっていないところが多いため、復
習に?勉めていきたい。