第3回 基礎プログラミング II レポート課題 氏名:笹木郁哉 学籍番号:c1090791 語学クラス:英語1 コース(系):地域 1. A Fumiya Sasaki 頭文字を大文字、それ以外を小文字とした。 F 0x46 u 0x75 m 0x6d i 0x69 y 0x79 a 0x61 スペース 0x20 S 0x53 a 0x61 s 0x73 a 0x61 k 0x6b i 0x69 ascIIコード表を活用し、照らし合わせた所、 このようになった。 B. きょう は いる (今日はいる) きょう はいる (今日入る) きょう は いる (今日は要る) きょう は いる (今日は煎る) C. 前回提出の自動車とメーカーについての配列を改良する。 hash配列 car について key は 車種名 value は メーカー、価格「 万円」(最高グレード)、車種の位置づけ、燃費 「km/リッター(平均)」 と設定する。 key は [セルシオ] 、value は 「トヨタ 、 785.5 、セダン 、6.65 」 key は [シーマ] 、value は 「日産 、 785.5 、セダン 、6.24 」 key は [レジェンド] 、value は 「ホンダ 、 635 、セダン 、8.5 」 key は [センティア] 、value は 「マツダ 、 442 、セダン 、9 」 key は [プラウディア] 、value は 「三菱 、 640 、セダン 、8.5 」 key は [LS600h] 、value は 「レクサス 、 1280 、セダン(ハイブリッド) 、12.2 」 配列の表し方 car["セルシオ"] = ["トヨタ" ,"785.5" ,"セダン","6.65 ] car["シーマ"] = ["日産" ,"785.5" ,"セダン","6.24 ] car["レジェンド"] = ["ホンダ" ,"635" ,"セダン","8.5 ] car["センティア"] = ["マツダ" ,"442" ,"セダン","9 ] car["プラウディア"] = ["三菱" ,"640" ,"セダン","8.5 ] car["LS600h"] = ["レクサス" ,"1280" ,"セダン(ハイブリッド)","12.2 ] もう一つの表し方 {"セルシオ" => ["トヨタ","785.5","セダン","6.65],"シーマ" => ["日産 ","785.5","セダン","6.24],"レジェンド" => ["ホンダ","635","セダン ","8.5],"センティア" => ["マツダ","442","セダン","9],"プラウディア" => ["三菱","640","セダン","8.5],"LS600h" => ["レクサス","1280","セダ ン(ハイブリッド)","12.2] と、このようになる。 A. 考えた設定 あらかじめプログラムに登録してある対を表示するもの。 1.Cを用いた。 作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' # このプログラムの漢字コードは EUC である car = Hash.new car["セルシオ"] = "トヨタ", 786, 6.7 car["シーマ"] = "日産",786, 6.2 car["レジェンド"] = "ホンダ", 635, 8.5 car["センティア"] = "マツダ", 442, 9 car["プラウディア"] = "三菱", 640, 8.5 car["LS600h"] = "レクサス",1280, 12.2 for dealer, tokutyou in car printf("%s は、%s の 価格は%d万円、燃費%dキロの高級車です。\n\n", dealer, tokutyou[0], tokutyou[1], tokutyou[2]) end もとにしたプログラムからの変更点 前回のレポートで作成したhash_for.rbを もとにし、今回の内容に合うよう変更した。 実行結果 pan{c109079}% ./hash_ary_print.rb [~/Ruby] センティア は、マツダ の 価格は442万円、燃費9キロの高級車です。 プラウディア は、三菱 の 価格は640万円、燃費8キロの高級車です。 レジェンド は、ホンダ の 価格は635万円、燃費8キロの高級車です。 シーマ は、日産 の 価格は786万円、燃費6キロの高級車です。 セルシオ は、トヨタ の 価格は786万円、燃費6キロの高級車です。 LS600h は、レクサス の 価格は1280万円、燃費12キロの高級車です。 考察 車種名、ディーラー名、価格、燃費それぞれが全て正しく表示されている ことから、正しいと言える。 B. 考えた設定 それぞれの車種の価格の安い順に並び変えるプログラム 作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' # このプログラムの漢字コードは EUC である car = Hash.new car["セルシオ"] = "トヨタ",786,6.7 car["シーマ"] = "日産",786,6.2 car["レジェンド"] = "ホンダ",635,8.5 car["センティア"] = "マツダ",442,9 car["プラウディア"] = "三菱",640,8.5 car["LS600h"] = "レクサス",1280,12.2 for dealer, tokutyou in car printf("%s は、%s の 価格は%d万円、燃費%dキロの高級車です。\n\n", dealer, tokutyou[0], tokutyou[1], tokutyou[2]) end print("\n価格順\n") car.keys.sort{|dealer,kakaku| car[dealer][1] <=> car[kakaku][1] }.each{|retail| printf("%s\t %5d [万円]\n", retail, car[retail][1])} もとにしたプログラムからの変更点 以前作成したhash_sesame,rbを参考にしてこの内容に合うよう 変更していった。 実行結果 pan{c109079}% ./hash_ary_sort.rb [~/Ruby] センティア は、マツダ の 価格は442万円、燃費9キロの高級車です。 プラウディア は、三菱 の 価格は640万円、燃費8キロの高級車です。 レジェンド は、ホンダ の 価格は635万円、燃費8キロの高級車です。 シーマ は、日産 の 価格は786万円、燃費6キロの高級車です。 セルシオ は、トヨタ の 価格は786万円、燃費6キロの高級車です。 LS600h は、レクサス の 価格は1280万円、燃費12キロの高級車です。 価格順 センティア 442 [万円] レジェンド 635 [万円] プラウディア 640 [万円] セルシオ 786 [万円] シーマ 786 [万円] LS600h 1280 [万円] 考察 価格が安い順に並べてあるのでこのプログラムは正しいと言える。 D. 考えた設定 データファイルとプログラムを分けた。 作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' total = 0 car = Hash.new print("\n価格の安い順に表示します\n\n") open("hash_ary_data.dat","r") do |m| while car_a = m.gets if/(\S+)\s+(\S+)\s+(\d+)\s+(\d+)/ =~car_a car[$1] = [$2, $3.to_i, $4,] end end end car.keys.sort{|expensive,cheep| car[expensive][1]<=>car[cheep][1]}.each{|dealer| printf("「%s」の価格は%d万円です。 \n",car[dealer][0],car[dealer][1])} for dealer, tokutyou in car total += tokutyou[1] end average = total.to_f/car.length printf("平均価格は%d万円です。\n",average) マツダ センティア 442 9 ホンダ レジェンド 635 8.5 三菱 プラウディア 640 8.5 日産 シーマ 786 6.2 トヨタ セルシオ 786 6.7 レクサス LS600h 1280 12.2 もとにしたプログラムからの変更点 先輩のを参考にしました。 実行結果 pan{c109079}% ./hash_ary_read.rb [~/Ruby] 価格の安い順に表示します 「センティア」の価格は442万円です。 「レジェンド」の価格は635万円です。 「プラウディア」の価格は640万円です。 「セルシオ」の価格は786万円です。 「シーマ」の価格は786万円です。 「LS600h」の価格は1280万円です。 平均価格は761万円です。 考察 価格が安い順に並んでいるのでこのプログラムは正しいと言える。 3.感想 今日はなるべくいつもより一人でがんばろうとして苦労しました。 ある程度は出来て来たと思う。先輩の作品や助言を聞いて確実に 前回より今回といい作品が出来ている。 あるところにおじいさんとおばあさんがいました。 おじいさんは山へしばかりにおばあさんは川へ 洗濯に 参考文献 西村まどか ASCIIコード表 http://roy/~madoka/2010/r1/05/05_01_theme_01_asciicode.html 西村クラスの昨年のいい作品 http://roy/~madoka/2009/r2/03/crt.html 協力してくれた先輩 大沼拓海さん