1.1番

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

score=[]
total = 0
number = 1
kai=0
print"出席回数を入力して下さい。\n"
attend=gets.chomp!.to_i
enter= attend*2
#p enter
print"8回分のレポートの得点の平均点を計算します。\n""レポートの最高得点は8点です。\n"

while
  number <= 8
  printf("%d回目の得点は?exitで終了。\n", number)
  score[kai] = gets.chomp!
  if score[kai].to_f <0
    print"得点は0から8点です。再度正確な点数を入力してください。\n"
    redo
  elsif score[kai].to_f >8
    print"本当に正確な点数ですか?\n""YesかNoで答えてください。\n"
    answer = gets.chomp!
    if answer == "Yes"
      print"分かりました。"
      elsif answer =="No"
      print"再度入力してください。"
      redo
    end
  end
  true
  if score[kai] == "exit"
    break
    end
  total += score[kai].to_f
  average = total/number
  number += 1
  kai+= 1
  fine= enter + total
end

#p score
print"------------------\n"
print"レポート\n"

x=0
if number==9
  while x< score.length
  printf("%d回目     %4.1f点\n",x+1,score[x].to_f)
    x += 1
    end
elsif number <8
 while x< score.length-1
  printf("%d回目     %4.1f点\n",x+1,score[x].to_f)
   x += 1
 end
 end
print"------------------\n"
printf("出席点  %7d\n",enter)

  printf("合計点   %6.1f\n",fine)
  printf("平均点   %6.1f\n",average)


  if fine >=90
   print"成績        秀\n"
    elsif fine >=80
   print"成績        優\n"
   elsif fine >=70
  print"成績        良\n"
   elsif fine  >=50
  print"成績        可\n"
   elsif fine < 50
  print"成績        不可\n"
end


3.

○8回入力間違いなしの場合。
出席回数を入力して下さい。
60
8回分のレポートの得点の平均点を計算します。
レポートの最高得点は8点です。
1回目の得点は?exitで終了。
2
2回目の得点は?exitで終了。
3
3回目の得点は?exitで終了。
4
4回目の得点は?exitで終了。
8
5回目の得点は?exitで終了。
8
6回目の得点は?exitで終了。
8
7回目の得点は?exitで終了。
7
8回目の得点は?exitで終了。
6
------------------
レポート
1回目      2.0点
2回目      3.0点
3回目      4.0点
4回目      8.0点
5回目      8.0点
6回目      8.0点
7回目      7.0点
8回目      6.0点
------------------
出席点      120
合計点    166.0
平均点      5.8
成績        秀


○8回以下間違いありの場合。

出席回数を入力して下さい。
13
8回分のレポートの得点の平均点を計算します。
レポートの最高得点は8点です。
1回目の得点は?exitで終了。
7
2回目の得点は?exitで終了。
5
3回目の得点は?exitで終了。
2
4回目の得点は?exitで終了。
8
5回目の得点は?exitで終了。
9  
本当に正確な点数ですか?
YesかNoで答えてください。
Yes
分かりました。6回目の得点は?exitで終了。
43
本当に正確な点数ですか?
YesかNoで答えてください。
No
再度入力してください。6回目の得点は?exitで終了。
exit
------------------
レポート
1回目      7.0点
2回目      5.0点
3回目      2.0点
4回目      8.0点
5回目      9.0点
------------------
出席点       26
合計点     57.0
平均点      6.2
成績        可


4.
1.2行目	おまじない。
3行目	レポートの得点を配列するための[]。
4行目	レポートの合計の計算を0から始めるため。
5行目	レポートを1回目を最初として数えるため。
6行目	kaiはscoreの配列の数を数えるインデックス。0から始める。
7行目	出席回数を促す文。
8行目	ユーザーが回数を入力する。
9行目	enterは出席点を計算する式。
10行目	enterが計算できているかの確認。
11.12行目	説明文。
13行目〜37行目	前回のプログラム。scoreの後ろに[kai]をつけて数えられるよ
うにしている。
38行目	scoreの数を数えるための式。
39行目	fineは出席点とレポート点を合わせた合計点の式。
40行目	wileの終了。
41行目	scoreの配列の確認。
42行目	計算結果の区切り。
43行目	レポートの結果。
44行目	scoreの変数。0から始める。
45行目	レポートの結果を8回入力したときはnumberが9になるのでこの条件で指
定。
46行目	%dに何回目かを示せるようx+1が、%4.1fには点数が入るよう
score[x].to_fが代入されるようにした。
47行目	xが数を数えられるための式。
48行目 この場合の繰り返しのwhileのend。
49行目 結果の入力が8回未満の場合のelsif。
50行目 lengthのままだとexitの分の回数も含まれてしまうのでこの式。
51.52行目 8回入力のときと同様。
53行目	 この場合の繰り返しのwhileのend。
54行目	 if全体のend。
55行目	 区切り。
56.57.58行目	出席点、合計点、平均点の結果。
59.60行目	90点以上だったら秀と表示
60.61行目	80点以上だったら優と表示
62.63行目	70点以上だったら良と表示
64.65行目	50点以上だったら可と表示
66.67行目	50点未満だったら不可と表示
68行目		成績を示すifのend。


5.

プログラムを作っていてインデックスの設定をどのようにすればいいか自分があ
まり理解出来ていないのが分かった。結局出席課題の配列のインデックス等をそ
のままうつしたようになってしまった。特に45行目のnumberが9なのは未だに納
得できていない。