1.1

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

total = 0
report = 1
score = []
x = 0

print"出席回数を入力してください。\n"
deta = gets.chomp!.to_i

while true 
 printf("%d回目のレポートの得点を入力してください(終了はexitと入力)\n", report)
  score[x] = gets.chomp!.to_s
  if score[x] == "exit"
    report = report-1
    break
  elsif score[x].to_f > 8 #scoreが8点以上
    print"最高得点は8点です。本当に間違いではありませんか\n"
    print"y or n\n"
    answer = gets.chomp!.to_s
    if answer == "y"
    end
    if answer == "n"
      print"入力しなおしてください。\n"
      total -= score[x].to_f
      redo
      end
  elsif score[x].to_f < 0 #scoreがマイナス
    print"マイナスなんてことはありません。やりなおし\n"
      total -= score[x].to_f
     redo
  end
 total += score[x].to_f
  if report >= 8
    break
  end
    
    #p score
  report += 1
  x += 1
end

print"- - - - - - - - - - - - - - - - - - - - - \n"
sten = deta*2
printf("出席点%10d点\n",sten)
print"- - - - - - - - - - - - - - - - - - - - - \n"
print"レポート\n"

x = 0
total  = 0

while x < score.length
  if score[x] =="exit"
break
end
 
printf("%d回目 %10.1f点\n",x+1,score[x])
total += score[x].to_f
x += 1
end

print"- - - - - - - - - - - - - - - - - - - - - \n"

average = total / report.to_f
go = total + sten

printf("合計%12.1f点\n",go)
printf("平均%12.1f点\n",average)



if go >= 90
  print"評価            秀\n"
elsif go >= 80 
  print"評価            優\n"
elsif go >= 70  
  print"評価            良\n"
elsif go >= 60
  print"評価            可\n"
else
  print"評価          不可\n"
end

3.
sime{c118xxx}% ./report4a.rb                                        [~/program]
出席回数を入力してください。
12
1回目のレポートの得点を入力してください(終了はexitと入力)
8
2回目のレポートの得点を入力してください(終了はexitと入力)
7
3回目のレポートの得点を入力してください(終了はexitと入力)
6
4回目のレポートの得点を入力してください(終了はexitと入力)
7
5回目のレポートの得点を入力してください(終了はexitと入力)
5
6回目のレポートの得点を入力してください(終了はexitと入力)
8
7回目のレポートの得点を入力してください(終了はexitと入力)
6.5
8回目のレポートの得点を入力してください(終了はexitと入力)
8
- - - - - - - - - - - - - - - - - - - - - 
出席点        24点
- - - - - - - - - - - - - - - - - - - - - 
レポート
1回目        8.0点
2回目        7.0点
3回目        6.0点
4回目        7.0点
5回目        5.0点
6回目        8.0点
7回目        6.5点
8回目        8.0点
- - - - - - - - - - - - - - - - - - - - - 
合計        79.5点
平均         6.9点
評価            良

★ブラックボックテスト

sime{c118xxx}% ./report4a.rb                                        [~/program]
出席回数を入力してください。
12
1回目のレポートの得点を入力してください(終了はexitと入力)
5
2回目のレポートの得点を入力してください(終了はexitと入力)
-7
マイナスなんてことはありません。やりなおし
2回目のレポートの得点を入力してください(終了はexitと入力)
6
3回目のレポートの得点を入力してください(終了はexitと入力)
7
4回目のレポートの得点を入力してください(終了はexitと入力)
8
5回目のレポートの得点を入力してください(終了はexitと入力)
9
最高得点は8点です。本当に間違いではありませんか
y or n
n
入力しなおしてください。
5回目のレポートの得点を入力してください(終了はexitと入力)
7
6回目のレポートの得点を入力してください(終了はexitと入力)
6
7回目のレポートの得点を入力してください(終了はexitと入力)
8
8回目のレポートの得点を入力してください(終了はexitと入力)
7
- - - - - - - - - - - - - - - - - - - - - 
出席点        24点
- - - - - - - - - - - - - - - - - - - - - 
レポート
1回目        5.0点
2回目        6.0点
3回目        7.0点
4回目        8.0点
5回目        7.0点
6回目        6.0点
7回目        8.0点
8回目        7.0点
- - - - - - - - - - - - - - - - - - - - - 
合計        78.0点
平均         6.8点
評価            良


☆ホワイトボックテスト

sime{c118xxx}% ./report4a.rb                                                                                                             [~/program]
出席回数を入力してください。
12
1回目のレポートの得点を入力してください(終了はexitと入力)
7
2回目のレポートの得点を入力してください(終了はexitと入力)
8
3回目のレポートの得点を入力してください(終了はexitと入力)
6
4回目のレポートの得点を入力してください(終了はexitと入力)
7
5回目のレポートの得点を入力してください(終了はexitと入力)
exit
- - - - - - - - - - - - - - - - - - - - - 
出席点        24点
- - - - - - - - - - - - - - - - - - - - - 
レポート
1回目        7.0点
2回目        8.0点
3回目        6.0点
4回目        7.0点
- - - - - - - - - - - - - - - - - - - - - 
合計        52.0点
平均         7.0点
評価          不可


4.
今回は、打ち込んだレポート得点を全て表示するために配列を使う。配列とは通
常は一つの値しかいれることのできない変数を、拡張して、複数の値を入れられ
るようにしたものだ。
 5行目で score=[] でscoreは配列ということを表し、今回はインデックスとし
 てxを用いており、配列の変数は0からスタートしているため、6行目で x=0 と
 表している。前回と違う点は、scoreの後ろに[x]がついてることだ。これは繰
 り返し継続する度、キーボードから打ち込まれた値はインデックスを1ずつ増加
 させながら配列内に代入されことを表している。
40行目で、一番最初に打ち込まれた出席点に2を掛けることを表している。46行
目でいままで打ち込まれたレポートの点数を lengthメソッドを使って表示させ
る。47行目で exit を打ち込まれた終了することを表している。55、56行目で、
合計と平均を計算している。57、58行目の 12という数字は文字列をそろえるた
めの数字だ。59行目は、56行目でだした合計をif文を用いて、成績をつける。if
の横に書いてある条件を満たすか満たさないかで判定され、満たした場合にはそ
の下にかかれた処理が実行される。二つ以上の条件があるため elsif 使いなが
ら条件を増やしていく。

5。今回もかなり難しかったです。友達の協力のもと完成できて良かったです。
いままでの知識も使いながらだったので記憶力がためされました。実際、ここに
これいれてみようかなっておもっていれたのが当たったところもあり、完璧には
理解できていません。先生の解説をはやくききたいです。