ファイルを読み込むループを作る。
open("ra-order.csv", "r") do |raa|
while line = raa.gets
print line
end
end
上記のプログラムの print line
の部分を、項目ごとに分解して printf
するように変える。print line
の行を以下のいずれかにする。
if /(.*),(,*),(.*)/ =~ line then
printf("%sさんが%sを注文しました。\n", $1, $2)
end
または
id, item = line.split(/,\s*/) # カンマで分割する
printf("%sさんが%sを注文しました。\n", id, item)
ヒントを参考に、 CSVをハッシュにするメソッドを利用し、上記の id と item の出力部分をハッシュ参照に変える。
def csv2hash(file, default = nil)
ra_hash = Hash.new(default) # 空のハッシュを作る
open(file, "r") do |f|
while line = f.gets
csv = line.chomp.split(/,\s*/) # カンマで分割
ra_hash[csv.shift] = csv
end
end
ra_hash
end
menu = csv2hash("ra-menu.csv")
sum = 0 # 合計売り上げ
open("ra-order.csv", "r") do |raa|
while line = raa.gets
id, item = line.split(/,\s*/) # カンマで分割する
printf("%sさんが%sを注文しました。\n", id, menu[item][0])
s += menu[item][1]
end
end
printf("%s\n今日の売り上げは%d円でした。\n", "-"*66, sum)
同様に ra-member.csv をハッシュ化し、メンバID から名前に変換する部分を作ればよい。