第 3 回 情報の構造を分析しよう レポート課題 氏名:安藤夏海 学籍番号:c1100130 語学クラス:英語、ロシア語 コース(系):環境サイエンス 1. A. Ando Natsumi A = 0x41 n = 0x6e d = 0x64 o = 0x6f N = 0x4e a = 0x61 t = 0x74 s = 0x73 u = 0x75 m = 0x6d i = 0x69 ----------------------------------------------------------------------------- B. のろいの はかばだ。(呪いの、墓場だ。 ) のろいのは かばだ。(のろいのは、カバだ。) ----------------------------------------------------------------------------- C. カクテルを hash 配列を cocktail とした。 key と value は ベース と カクテル名にした。 その1:key 「ジン」に対して valueは「マティーニ, ジントニック, ギムレット」 その2:key 「ウォッカ」に対して valueは「バラライカ, モスコー・ミュール, ソルティードッグ」 その3:key 「ラム」に対して valueは「ダイキリ, アカプルコ, XYZ」 その4:key 「リキュール」に対して valueは「バレンシア, グラスホッパー, ス プモー二」 その5:key 「ウィスキー」に対して valueは「マンハッタン, ラスティネイル, ゴッドファーザー」 その6:key 「ブランデー」に対して valueは「サイドカー, ムーランルージュ, ハムレット」 これらをhash配列で表記すると、 ken["ジン"] = "マティーニ", ジントニック, ギムレット ken["ウォッカ"] = "バラライカ", モスコー・ミュール,ソルティードッグ ken["ラム"] = "ダイキリ", アカプルコ, XYZ ken["リキュール"] = "バレンシア", グラスホッパー, スプモー二 ken["ウィスキー"] = "マンハッタン", ラスティネイル,ゴッドファーザー ken["ブランデー"] = "サイドカー", ムーランルージュ,ハムレット となる。 もうひとつの表し方では、 {"ジン" => "マティーニ", ジントニック, ギムレット "ウォッカ" => "バラライカ", モスコー・ミュール,ソルティードッグ "ラム" => "ダイキリ", アカプルコ, XYZ "リキュール" => "バレンシア", グラスホッパー, スプモー二 "ウィスキー" => "マンハッタン", ラスティネイル,ゴッドファーザー "ブランデー" => "サイドカー", ムーランルージュ,ハムレット } になる。 2. A. #!/usr/koeki/bin/ruby $KCODE = 'e' schedule = Hash.new #変数にハッシュを代入する schedule_b = Hash.new open("hash_ary_data.dat","r") do |imihu| #読みこみモードでファイルオープンをする while hash_data = imihu.gets if /(\S+)\s+(\S+)/ =~ hash_data schedule[$1] = $2 end end end STDERR.print("ベース(基酒)を選択して下さい\n") name = gets.chomp if schedule.key?(name) == false #変数nameがハッシュのkeyに存在しないときに実行される部分 STDERR.printf("%sは登録されていません。\n",name) STDERR.print("新規登録しますか?\n") STDERR.print("(y 新規登録/ その他の入力 検索終了)\n") answer = gets.chomp if answer == "y" while true STDERR.print("ベース(基酒)を入力して下さい。(Ctr-dで終了)\n") name_b = gets if name_b == nil break else name_b_m = name_b.chomp end STDERR.print("ベース(基酒)を選択して下さい\n") number = gets.chomp schedule_b[name_b] = number open("hash_data.dat","a") do |hash_data| #hash_data.dat内に以下のprintf文を書き込むため部分(データの新規登録する部分) hash_data.printf("%s %s\n",name_b_m,number) end end print("入力終了 \n") for namae,bangou in schedule_b #schedule_b内のハッシュの対を表示させる printf("ベース(基酒) : %s カクテル名 : %s\n",namae,bangou) end print("を新規登録しました。\n") else print("検索終了\n") end else printf("【%s】の 有名なカクテル 〈%s〉等ですです。\n",name,schedule[name]) end ------------------------ 東北公益文科大学2年 安藤夏海 Ando Natsumi c110013@f.koeki-u.ac.jp ------------------------