氏名:eight 学籍番号:c115157 クラス:中国語 ○どの問題を選択したか 3番 ○作成したプログラム本体 #!/usr/koeki/bin/ruby # coding: utf-8 defined?(Encoding) && Encoding.default_external = "binary" if ARGV[0] == nil STDERR.print"データファイルを入れて下さい。\n" STDERR.print"公開年順に出力:% ./kadai-5-3.rb -a jiburi.txt \n " STDERR.print"所要時間順に出力:% ./kadai-5-3.rb -b jiburi.txt \n" STDERR.print"興行収入順に出力:% ./kadai-5-3.rb -c jiburi.txt \n" exit(1) end choice = 0 sortby = 0 while /^-/ =~ ARGV[0] if ARGV[0] == "-a" #所要時間基準 choice = 1 elsif ARGV[0] == "-b" #収入基準 choice = 2 else break end ARGV.shift end date = Hash.new while line = gets if /(\S+)\s+(\d+)\s+(.+)\s+(\d+)/ =~ line date[$1] = [$2.to_i, $3.to_i, $4.to_i] # 配列を代入 end end print "--作品名-----------------------+--公開年--+--所要時間--+--収入--+\n" for jiburi in date.keys.sort {|x, y| date[x][choice] <=> date[y][choice] } koukai = date[jiburi][0] jikan = date[jiburi][1] kane = date[jiburi][2] printf("%-28s %15d年 %10d分 %7d億円 \n", jiburi, koukai, jikan, kane) end ○プログラムの説明 (1)ジブリ映画の公開年順、所要時間順、収入順に並び替えを行うプログラムを作成す る。 (2)ユーザーにどれを基準に並び替えを行うか選ばせるために、[ARGV]を用いて コマンドラインでやりとりをする。[ARGV[0]]に[-a]が入力されたときは[choice =1]とし、[ARGV[0]]に[-b]が入力されたときは[choice = 2]とする。 (3)変数choiceは、[date[x][choice] <=> date[y][choice]]の部分に代入され、 数字によってどのvalueのデータを比べるかを決定する。つまり、[choice = 1]のときは所要時間が並び替えの基準となり、[choice = 2]のときは収入が並び 替えのる。 (4)最初に[choice = 0]としているため、[ARGV[0]]に何も入力されなかった場合 は、[choice = 0]となり、並び替えの基準は公開年となる。 (5)配列処理メソッドは[sort]なので、昇順で表示される。 ○実行結果 sime{YAGI Erika}% ./kadai-5-3.rb -a jiburi.txt [~/Ruby] --作品名-----------------------+--公開年--+--所要時間--+--収入--+ 猫の恩返し 2002年 75分 64億円 となりのトトロ 1988年 86分 11億円 コクリコ坂から 2011年 91分 44億円 紅の豚 1992年 93分 47億円 借りぐらしのアリエッティ 2010年 94分 92億円 崖の上のポニョ 2008年 101分 155億円 魔女の宅急便 1989年 102分 36億円 思い出のマーニー 2014年 103分 35億円 ホーホケキョとなりの山田君 1999年 104分 15億円 耳をすませば 1995年 111分 31億円 ゲド戦記 2006年 115分 76億円 風の谷のナウシカ 1984年 116分 14億円 ハウルの動く城 2004年 119分 196億円 おもひでぽろぽろ 1991年 119分 31億円 平成狸合戦ぽんぽこ 1994年 119分 44億円 天空の城ラピュタ 1986年 124分 11億円 千と千尋の神隠し 2001年 125分 304億円 風立ちぬ 2013年 126分 120億円 もののけ姫 1997年 133分 193億円 かぐや姫の物語 2013年 137分 24億円 ○参考文献 ・STUDIO GHIBLI."スタジオジブリの作品".スタジオジブリ STUDIO GHIBL.2016-10-21.(日本語),http://www.ghibli.jp/works/,(参照2016-10-29). ・株式会社SICS."ジブリ作品興行収入一覧と興行収入推移グラフを見てみる".わ かること!Wakarukoto! BLOG Media.2015-12-4.(日本 語),http://wakarukoto.com/?p=2485,(参照2016-10-29). ・広瀬雄二."第5回 配列とハッシュの応用".基礎プログラミングII.(日本 語),http://roy/~yuuji/2016/pf2/05/index.html,(参照2016-10-29) ○感想 最初は並び替えの基準別に、[for jiburi in date.keys.sort]以降のプログラム を一々挟めていましたが、プログラムが長い上に実行出来ませんでした。友達に 変数を用いて基準を変える方法を教えてもらい、なんとか実行できる形になりま した。なので、今度は自分でユーザーが任意で昇順・降順を選べるように改善し たいと思うので、完成したら再提出したいと思います。