Hash の対を入力するには

ルビ緒は、その日の仕入の状況で、 取り扱う雑穀の種類や価格が変わることに気がついた。 そこで、雑穀のデータを入力するプログラムを作ることにする。pair.rb


#!/usr/koeki/bin/ruby
shop = Hash.new("非取扱い商品")
printf("本日の価格を入力してください\n")
printf("** 終了は Ctrl-D\n")

while true
   STDERR.print("取扱商品名:")
   item = gets

   if item == nil                  # Ctrl-D が押されたら修了
     then break
   else                            # Ctrl-D 以外の文字列はここに進む
     item = item.chomp             # 改行文字を取れ
   end

   STDERR.print("100グラムあたりの価格:")

   price = gets.chomp.to_i  
   shop[item] = price
end

STDERR.print("入力終了 \n")

$KCODE = 'e'                   # 漢字コードは EUC で
p shop                         # 確認のため shop に入っているデータを全て見せよ

実行してみよう。

本日の価格を入力してください
** 終了は Ctrl-D
取扱商品名:押し麦
100グラムあたりの価格:250
取扱商品名:あわ
100グラムあたりの価格:180
取扱商品名:ひえ
100グラムあたりの価格:130
取扱商品名:きび
100グラムあたりの価格:210
取扱商品名:クコの実
100グラムあたりの価格:230
取扱商品名:そばの実
100グラムあたりの価格:170
取扱商品名:入力終了 
{"きび"=>210, "そばの実"=>170, "押し麦"=>250, "ひえ"=>130, "クコの実"=>230, "あわ"=>180}

同じ穀物を 2 回、異なる値段で入力した場合、 登録されたデータがどのように表示されるのか、調べてみよう。

本日の講義 / 基礎プログラミング II / 2007 年度

Madoka Nishimura <madoka@e.koeki-u.ac.jp>