1.実施した課題の番号 1


2.作成したプログラム

#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-
code = []
total = 0
number = 1
x = 0
print"出席回数を入力してください\n"
kaisu = gets.chomp!.to_f
ten = kaisu*2
print"レポートの合計得点、平均点を求めます。\n"
print"途中でレポートの合計得点、平均点を求める場合はexitを入力。\n"
while true
   if number == 9 
    break
    end
  printf("%dつ目のレポートの得点は?(終了はexit)\n", number)
  code[number-1] = gets.chomp!
  score = code[number-1].to_f
  if code[number-1] =="exit"
    break 
  elsif code[number-1].to_f < 0
     print" マイナスはありえません。得点を再入力してください。\n"
    redo
  elsif code[number-1].to_f > 8
    printf("得点が%.1f点です\n",score)
    print"得点が正しけばyesを入力してください\n"
    print"得点が間違っていればnoを入力してください\n"
    mozi = gets.chomp!
    if mozi == "yes"
      print"先程の得点のままですね\n"
    elsif mozi == "no"
      print"再入力をお願いします\n"
      redo
     end
  end
  number += 1
  total += score
end
  printf("出席点             %3.1f点\n",ten)
print"レポート\n"
while   x < code.length
  printf("%d回目               %3.1f点\n",x+1,code[x].to_f)
  x += 1
  if code[x] == "exit"
    break
  end
end
average = total / (number-1)
goukei = total + ten
    printf("合計               %3.1f点\n",goukei)
printf("%d回のレポート平均   %3.1f点\n",number-1,average)
if goukei >= 70
  print"評価             秀 \n"
elsif goukei >= 60
  print"評価             優 \n"
elsif goukei >= 50
  print"評価             良\n"
elsif goukei >= 40
  print"評価             可\n"
else
  print"評価           不可\n"
end

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


出席回数を入力してください
8
レポートの合計得点、平均点を求めます。
途中でレポートの合計得点、平均点を求める場合はexitを入力。
1つ目のレポートの得点は?(終了はexit)
10
得点が10.0点です
得点が正しけばyesを入力してください
得点が間違っていればnoを入力してください
yes
先程の得点のままですね
2つ目のレポートの得点は?(終了はexit)
10
得点が10.0点です
得点が正しけばyesを入力してください
得点が間違っていればnoを入力してください
no
再入力をお願いします
2つ目のレポートの得点は?(終了はexit)
5
3つ目のレポートの得点は?(終了はexit)
8    
4つ目のレポートの得点は?(終了はexit)
8
5つ目のレポートの得点は?(終了はexit)
8
6つ目のレポートの得点は?(終了はexit)
8
7つ目のレポートの得点は?(終了はexit)
8
8つ目のレポートの得点は?(終了はexit)
8
出席点             16.0点
レポート
1回目               10.0点
2回目               5.0点
3回目               8.0点
4回目               8.0点
5回目               8.0点
6回目               8.0点
7回目               8.0点
8回目               8.0点
合計               79.0点
8回のレポート平均   7.9点
評価             秀

4.プログラムの説明


code = []では配列に入るのが変数なのでこのように指定しない形にし、入力し
た値を保持するようにした。number = 1というように初期値を設定したので
code[number-1] = gets.chomp!
score = code[number-1].to_f
というように[number-1]してレポートの何回目と得点が配列でずれないようにし
た。
while   x < code.length
ではlengthメソッドを使うことにより配列に代入した値を返すようにした。

 printf("%d回のレポート平均   %3.1f点\n",number-1,average)
 では %3.1fというように全体で3桁の小数第1まで表記されるようにした。
 
5.感想
10人くらいの人に今回の課題のアドバイスなど教えたりして自分の理解が深まっ
た。また、自分で課題を終わらせた後、人に教えていくうちに新たな発見があり
このよう?にすればプログラムが短縮できるというように学ぶことがあったので良
かった。


6.参考文献

神田先生の説明
http://roy/~naoya/ruby/6.html (参照2019/5/19)