問題1を実施
#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-
d = 0
while line = gets
if /(第\d+回)\s+(\d)\s+(\S+)/ =~ line
d += $2.to_f + $3.to_f
end
end
print("出席点とレポート点をあわせた合計点数")
p d
if d >= 90
print"評価 秀\n"
elsif d >= 80
print"評価 優\n"
elsif d >=70
print"評価 良\n"
elsif d >=60
print"評価 可\n"
else
print"評価 不可\n"
end
出席点とレポート点をあわせた合計点数69.0
評価 可
プログラムの説明
6行目は正規表現を行った。はじめは\dで0から9までの文字とマッチした。\sでは読み込んだデータの空白を表している。
=~lineはファイルから1行ずつプログラムを読み込みlineに代入している。
8行目は後方参照をしており、6行目で正規表現に()を使用して入力することで
$数字の形でマッチした部分を取り出している。
14行目からは以前授業で習ったことを入力した。
感想
正規表現や後方参照という言葉は初めて聞いたときは意味がわからなかったけれど、プログラムを作ってみて少しは理解できたので良かったです。
添付:
report5.rb