1.	全て(5番まで)実行
2.	
#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-

total = 0
number = 1

print"レポートの合計得点を計算します。(終了はexit)\n"

while true
  printf("%d回目のレポートの得点は?\n", number)
  score = gets.chomp!

  if score.to_f > 8
    printf"その得点は本当に正しいですか?(正しい→y,誤り→n)\n"
    seigo = gets.chomp!
    if seigo == "n"
      print"次は正しい数値を入力してください。\n"
      redo
    end
  end
  
  if score.to_f < 0 
    print"0?8の実数のいずれかを入力してください。\n"
    redo
  end

  total += score.to_f
  number += 1
 
  
  if score == "exit"
    break
  end
  
  if number == 9
    break
  end

 
end

heikin1 = total / (number - 1)
heikin2 = total / (number - 2)

printf("合計得点は%5.2fです。\n",total)
if score == "exit"
  printf("平均得点は%4.1fです。\n",heikin2)
else
  printf("平均得点は%4.1fです。\n",heikin1) 
end

3.
��8回目まですべて入力した場合
レポートの合計得点を計算します。(終了はexit)
1回目のレポートの得点は?
0.5
2回目のレポートの得点は?
0.5
3回目のレポートの得点は?
0.5
4回目のレポートの得点は?
0.5
5回目のレポートの得点は?
0.5
6回目のレポートの得点は?
0.5
7回目のレポートの得点は?
0.5
8回目のレポートの得点は?
0.5
合計得点は 4.00です。
平均得点は 0.5です。

��8回までいかず途中で入力が終わった場合
レポートの合計得点を計算します。(終了はexit)
1回目のレポートの得点は?
0.1
2回目のレポートの得点は?
0.1
3回目のレポートの得点は?
Exit
合計得点は 0.20です。
平均得点は 0.1です。

�E喘罎派蕕凌瑤�入力された場合の処理
レポートの合計得点を計算します。(終了はexit)
1回目のレポートの得点は?
1
2回目のレポートの得点は?
-1
0?8の実数のいずれかを入力してください。
2回目のレポートの得点は?
…

�づ喘罎�8より大きい数が入力された場合の処理(正しいver)
レポートの合計得点を計算します。(終了はexit)
1回目のレポートの得点は?
1
2回目のレポートの得点は?
9
その得点は本当に正しいですか?(正しい→y,誤り→n)
y
3回目のレポートの得点は?
…

�ヅ喘罎�8より大きい数が入力された場合の処理(誤りver)
レポートの合計得点を計算します。(終了はexit)
1回目のレポートの得点は?
1
2回目のレポートの得点は?
9
その得点は本当に正しいですか?(正しい→y,誤り→n)
n
次は正しい数値を入力してください。
2回目のレポートの得点は?
…


4.課題1~5まで順に説明します。

?43行目に平均を求める、heikin関数を追加。得点の合計(total)を回数(number-1)
で割ると平均が求まる。-1の理由は、numberを初期値1で設定しているため。

?8行目(最初に表示される文)で、点数の入力が終わった場合はexitを入力するよう入力者に促す。
 10行目、プログラムにwhile trueで、「条件を満たすまで実行を続ける」という命令をする。これで条件を満たさない限り永遠にプログラムが継続される。
 12行目、.to_fをなくし、実数以外も受け取ることを可能に。
 28行目、入力されたもの(score)を実数として受け取るため、.to_fを追加。
 32~34行目、if-endで条件を定義。入力されたもの(score)がexitだった場合に実行が終了されるよう指示。
 33行目、breakで繰り返しから抜ける。
 44行目、exitを入力した分も回数に含まれてしまうため?よりもさらにnumberから1引く。
 47~51行目、exitと入力された場合は平均の計算が違うため、if-endで表示される文を変える。ifでexitが入力されたという条件を定義。elseはその条件以外の場合に実行される。

?36~38行目、if-endとbreakで、回数(number)が9になったら繰り返しから抜ける、と条件を定義。8回目まで実行され、9回目でやめたいため、9になるのだ。
 37行目、breakで繰り返しから抜ける。

?23~26行目、入力された得点(score)が0より小さい場合、再入力を促すメッセージを表示するようにする。
 23行目、入力されたもの(score)を実数として受け取るために、.to_fを忘れずに。
 25行目、条件を満たす場合、redoで直前に入力された値を無効化し、while trueの真下の行に戻される。もう1度その回を入力させることができる。

?14~21行目。
 14行目、「入力された得点(score)が8より大きい場合」と条件定義。実数として受け取るために、.to_fを忘れずに。
 15行目、条件を満たした場合、その得点は正しいかどうかを答えさせるメッセージを表示。
 16行目、seigo関数に正しいかどうか入力したものをgets.chomp!で受け取る。
(正しい場合は次の得点入力に進む。)
 17行目、ifで「入力されたもの(seigo)が誤り(n)だった場合」と条件定義。
 18行目、条件を満たす場合、正しく入力するよう促すメッセージを表示。
 19行目、条件を満たす場合、redoで直前に入力された値を無効化し、while trueの真下の行に戻される。もう1度その回を入力させることができる。


5.numberの初期値が1であるため少し頭をひねらなくてはいけなかったのが大変だった。平均がなかなか合わず、苦労した。実数に変えるのを忘れてしまいエラーがでるといったことが何度かあったので、今後気を付けたい。

6.なし

添付:
report3.rb