講評: 2 次元配列のプログラムになっていますが、 次のプログラムでは Hash 配列が復活していました。 どちらでも書けることが分ったことが重要です。 ---- 10 月 17 日 第 3 回レポート 「Value が配列のとき」 学籍番号:c106XXXX 氏名:XXXXXXXX 語学クラス:XXXX語XX 系: XXXX系 1、 A:9月の山形県各地方と仙台の降水量を hash 配列 ame としました。 ame の key と value はそれぞれ地域名とその上旬[mm]、中旬[mm]、下旬[mm]の降水量にとりました。 その 1: key 「村山地方」に対して valueは「122, 30, 10」 その 2: key 「庄内地方」に対して valueは「34, 78, 28」 その 3: key 「最上地方」に対して valueは「67, 25, 9」 その 4: key 「置賜地方」に対して valueは「120, 32, 1」 その 4: key 「仙台」に対して valueは「81, 42, 5」 これらを hash 配列で表記すると、 ame["村山地方"] = 122,30,10 ame["庄内地方"] = 34,78,28 ame["最上地方"] = 67,25,9 ame["置賜地方"] = 120,32,1 ame["仙台"] = 81,42,5 参考データ 山形県の気候 http://www.sendai-jma.go.jp/tidai/yamagata/yamagata/tenko_sokuho/tenko_sok_200709.pdf B:自分の名前 Kimihira Nao ASCII コードに変換 0x4b,0x69,0x6d,0x69,0x68,0x69,0x72,0x61,0x4e,0x61,0x6f 10進数表記に変換 0d75,0d105,0d109,0d105,0d104,0d105,0d114,0d97,0d78,0d97,0d111 2、 考えたプログラム データを使わずに9月の山形、仙台の降水量を表示するプログラム 制作したプログラム hash-for.rb #!/usr/koeki/bin/ruby $KCODE = 'e' ame = Array.new i=0 ame[0] =["村山地方" ,122,30,10] ame[1] =["庄内地方",34,78,28] ame[2] =["最上地方",67,25,9] ame[3] =["置賜地方",120,32,1] ame[4] =["仙台",81,43,5] while i<5 printf("9月の%sの降水量は上旬%d[mm],中旬%d[mm]下旬%d[mm]\n",ame[i][0],ame[i][1],ame[i][2],ame[i][3]) i += 1 end プログラムの変更点 問題の「登録したプログラムを表示する」というところについて、データを使っ ていいのかわからなかったので前期プログラムの講義ノート(train.rb)を参考に してデータを使わずに表示させました。(データを使ったプログラムもつくった ので載せておきます。) 実行したプログラムの結果 irsv{c106071}% ./hash-for.rb [~/Ruby] 9月の村山地方の降水量は上旬122[mm],中旬30[mm]下旬10[mm] 9月の庄内地方の降水量は上旬34[mm],中旬78[mm]下旬28[mm] 9月の最上地方の降水量は上旬67[mm],中旬25[mm]下旬9[mm] 9月の置賜地方の降水量は上旬120[mm],中旬32[mm]下旬1[mm] 9月の仙台の降水量は上旬81[mm],中旬43[mm]下旬5[mm] 参考文献 講義ノート 考えたプログラム データをつかった山形、仙台の降水量を表示するプログラム 制作したプログラム hash-for1.rb #!/usr/koeki/bin/ruby $KCODE = 'e' ame = Hash.new while kousui = gets if /(\S+)\s+(\d+)\s+(\d+)\s+(\d+)/ =~ kousui ame[$1] = [$2.to_i,$3.to_i,$4.to_i] end printf("%sの降水量は上旬%d[mm],中旬%d[mm]下旬%d[mm]\n",$1,$2.to_i,$3.to_i,$4.to_i) end print("中旬の降水量について\n") ame.keys.sort{ |second,lowest| ame[second][1] <=>ame[lowest][1] }.each{ |retail| printf("%s\t%d\n", retail, ame[retail][1]) } 変更したプログラム 講義ノートを参考に(sesame.rb)指定した降水量を表示した。 実行したプログラムの結果 irsv{c106071}% ./hash-for1.rb ame.dat [~/Ruby] 村山地方の降水量は上旬122[mm],中旬30[mm]下旬10[mm] 庄内地方の降水量は上旬34[mm],中旬78[mm]下旬28[mm] 最上地方の降水量は上旬67[mm],中旬25[mm]下旬9[mm] 置賜地方の降水量は上旬120[mm],中旬32[mm]下旬1[mm] 仙台の降水量は上旬81[mm],中旬42[mm]下旬5[mm] 中旬の降水量について 最上地方 25 村山地方 30 置賜地方 32 仙台 42 庄内地方 78 参考文献 講義ノート 感想 今までハッシュ配列について学んでいるがレポート作っていると前期のプログラム で学んだことを復習しながら作っています。また、プログラムをつくってみてハッ シュ配列と前期のプログラムとが関連、応用していることがわかりました。