1番を実行しました。
プログラム
#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-
total = 0
while line = gets
if /\S+\s+(\d)\s+(\d+(\.\d+)?)/ =~ line
syusseki = $1.to_i
repo= $2.to_f
total += syusseki + repo
end
end
printf("合計得点は%4.1fです。\n",total)
if total >= 90
print"秀評価です\n"
elsif total >= 80
print"優評価です\n"
elsif total >= 70
print"良評価です\n"
elsif total >= 60
print"可評価です\n"
else
print"不可評価です\n"
end
実行結果
合計得点は69.0です。
可評価です
説明
最初の2行は魔法
total = 0、初期値は0にする。
while で繰り返しの指示。line = gets、今回はファイルを読みこませるので
getsで終わり。
if /\S+\s+(\d)\s+(\d+(\.\d+)?)/ =~ lineの\Sは空白以外を表していて、\sは
逆に空白を表している。\dは0〜9までの数にマッチングする意味で、\.は任意の
一文字マッチしていて、?は直前の文字を繰り返すことを意味している。
syusseki = $1.to_i
repo= $2.to_f この二つは、上のプログラミングにファイルを読ませて、
数を標記させている。$は数字の形で取り出すという後方
参照です。
total += syusseki + repo
出席点とレポート点を合計。
最後にprintf("合計得点は%4.1fです。\n",total)
if total >= 90
print"秀評価です\n"
elsif total >= 80
print"優評価です\n"
elsif total >= 70
print"良評価です\n"
elsif total >= 60
print"可評価です\n"
else
print"不可評価です\n"
end
この指示では、totalの点数の大きさによって評価を付ける。if endで当てはま
るまで繰り返すように指示する。
参考文献
友だちのプログラミング(奥井君)
神田先生の基礎プログラミングのページ