1、何番まで実施したか
   5番です。

2、作成したプログラム

#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-

total = 0
time = 1
average = 0

print"レポートの平均得点を求めます。\n"

while true
   printf("%d回目のレポートの得点は?(終了はexit)\n", time)
   point = gets.chomp!
   if point == "exit" || time >= 8
   break
   end
   number = point.to_f
   if  number > 8 
   print"正しい得点を入力しましたか?(y/n)\n"
   answer = gets.chomp!
   if answer == "y"
   end
   if answer == "n"
   redo
   end
   end
   if number < 0
   print"正しい得点を入力してください。\n"
   redo
   end
   time += 1
   total += point.to_f
   average = total/(time.to_f - 1)
end

printf("平均得点は%.1f点です。\n",average)

3、プログラムの実行結果

(1回目)
sime{c11xxxx}% ./report3.rb                                         [~/program]
レポートの平均得点を求めます。
1回目のレポートの得点は?(終了はexit)
10
正しい得点を入力しましたか?(y/n)
y
2回目のレポートの得点は?(終了はexit)
9
正しい得点を入力しましたか?(y/n)
n
2回目のレポートの得点は?(終了はexit)
8
3回目のレポートの得点は?(終了はexit)
8.8
正しい得点を入力しましたか?(y/n)
y
4回目のレポートの得点は?(終了はexit)
-5
正しい得点を入力してください。
4回目のレポートの得点は?(終了はexit)
6
5回目のレポートの得点は?(終了はexit)
8
6回目のレポートの得点は?(終了はexit)
8
7回目のレポートの得点は?(終了はexit)
8
8回目のレポートの得点は?(終了はexit)
8
平均得点は8.1点です。

(2回目)
sime{c11xxxx}% ./report3.rb                                         [~/program]
レポートの平均得点を求めます。
1回目のレポートの得点は?(終了はexit)
2
2回目のレポートの得点は?(終了はexit)
exit
平均得点は2.0点です。

4、プログラムの説明
   (1)平均値を求めるので、 average = total/(time.to_f - 1)を足しました。
   また、プログラムが終わるとき、timeの値は合計に入るレポートの回数より1
   回多いので、timeから1を引いてから合計点で割り、平均点を求めます。


   (2)while文を使い、「exitを入力した」という条件を満たすまで、レポート
   得点を読み込み続けます。条件が満たされると、 breakが実行され、プログ
   ラムの繰り返しが終わります。
   また、to_fメソッドは値の型を実数に変換するメソッドです。そのまま使うと
   「exit」が実数の0として読み込まれてしまうので、to_fを後の移します。
   さらに、テストにより、最初から「exit」を入力すると、表記できるaverageの
   値がなく、エラーが出てしまいます。それを防ぐため、averageの初期値を0
   と設定します。

   (3)breakの条件が二つまで増え、if point == "exit" || time >= 8を足しま
   す。「exitを入力した」と「timeが8か8より大きい数字になる」この二つの
   条件いずれが満たされると、whileの繰り返しから抜きます。
   

   (4)数字の大きさを比べるので、入力された数字が文字列として読み込まれる
   と、エラーが出ます。number = point.to_fを足すと、入力された数字は文字
   列ではなく、実数として読み込まれます。
   if number < 0 || number > 8 を使い、以上いずれの条件が満たされる場合は、
   「正しい得点を入力してください」が表記され、さらに、redoが実行され、
   すなわち、繰り返しの先頭からやり直します。

   (5)入力された得点が8より大きい場合は「正しい得点を入力しましたか?
   (y/n)」が表記され、さらにgetsメソッドを使い、「y」が入力されたら、先
   程入力された得点はそのまま読み込まれ、「n」が入力された場合は、redo
   が実行され、もう一度得点を入力させます。


5、感想
   プログラムを何回作っても、BUGがいくつが出ます。テストの重要さが分かっ
   たきました。

6、協力者: 千葉結香梨さん 鈴木瞭太さん