第7回 基礎プログラミング II レポート課題 氏名:小松志保 学籍番号:c1090667 語学クラス:中国語1 コース(系):社会福祉 1 A. a) [企画意図] このプログラムはキャラクターの値段、大きさ、生まれた年が昇順か降順に並べ 変えることができ、一目でわかるプログラムである。 [遊び方] 遊び方はまず、hash_ary_sort.rbをダウンロードする。 次にktermでhash_ary_sort.rb 222.txtと入力をする。 次に何の順番が知りたいかa〜dの中から選ぶと順番が表示される。 著作権 このプログラムは東北公益文科大学二年、小松志保が著作権を保有しています。 プログラムの実行、改良は自由に行っても構いませんが、使用により生じた障害、 損害、不具合については一切責任を負いません。 [連絡先] 制作者 小松志保 b) [a]-------------------------------------------------------------------- キャラクターの値段、大きさ、生まれた年の並び変えをするプログラム hash_ary_sort.rbを作成した。また、データを読み込む222.txtも作成した。 [b]---------------------------------------------------------- 222.txt↓ キャラクター 値段 重さ 生まれた年 プーさん 595 150 1921 ミッキーマウス 595 130 1928 キティちゃん 400 100 1974 ミスバニー 504 120 1942 スティッチ 504 130 2002 hash_ary_sort.rb↓ #!/usr/koeki/bin/ruby character = Hash.new while line = gets if /(\S+)\s+(\d+)\s+(\d+)\s+(\d+)/ =~ line # 1個目の( ) (\S+)→キャラクター名が入る # 2個目の( ) (\d+)→値段が入る # 3個目の( ) (\d+)→重さが入る # 4個目の( ) (\d+)→生まれた年が入る character[$1] = [$2.to_f,$3.to_f,$4.to_f] end end print"どの順に並び替えたいですか?選んで下さい。\n" print"値段(a:昇順、b:降順)、重さ(c:昇順、d:降順) 生まれた年(e:昇順、f:降順)\n" rank = STDIN.gets.chomp! if rank == "a" print"値段:昇順\n" print"--キャラクター名------------+--値段--+--重さ--+--生まれた年--\n" for name in character.keys.sort {|a, b| character[a][0] <=> character[b][0]} printf("%-26s %8d %8d %10d \n", name, character[name][0], character[name][1], character[name][2]) end elsif rank == "b" print"値段:降順\n" print"--キャラクター名------------+--値段--+--重さ--+--生まれた年--\n" for name in character.keys.sort {|a, b| character[b][0] <=> character[a][0]} printf("%-26s %8d %8d %10d \n", name, character[name][0], character[name][1], character[name][2]) end elsif rank == "c" print"重さ:昇順\n" print"--キャラクター名------------+--値段--+--重さ--+--生まれた年--\n" for name in character.keys.sort {|a, b| character[a][1] <=> character[b][1]} printf("%-26s %8d %8d %10d \n", name, character[name][0], character[name][1], character[name][2]) end elsif rank == "d" print"重さ:降順\n" print"--キャラクター名------------+--値段--+--重さ--+--生まれた年--\n" for name in character.keys.sort {|a, b| character[b][1] <=> character[a][1]} printf("%-26s %8d %8d %10d \n", name, character[name][0], character[name][1], character[name][2]) end elsif rank == "e" print"生まれた年:昇順\n" print"--キャラクター名------------+--値段--+--重さ--+--生まれた年--\n" for name in character.keys.sort {|a, b| character[a][2] <=> character[b][2]} printf("%-26s %8d %8d %10d \n", name, character[name][0], character[name][1], character[name][2]) end elsif rank == "f" print"生まれた年:降順\n" print"--キャラクター名------------+--値段--+--重さ--+--生まれた年--\n" for name in character.keys.sort {|a, b| character[b][2] <=> character[a][2]} printf("%-26s %8d %8d %10d \n", name, character[name][0], character[name][1], character[name][2]) end else printf("%sは選択肢にないです。a〜fの中で選んで下さい\n",rank) end [c]------------------------------------------------------------------- 第3回目のレポート課題を元にしたので、「値段、重さ、生まれた年」に変えた。 値段はそのままにし、重さと生まれた年をそれぞれの数字に変えた。 [d]--------------------------------------------------------------------- どの順に並び替えたいですか?選んで下さい。 値段(a:昇順、b:降順)、重さ(c:昇順、d:降順) 生まれた年(e:昇順、f:降順) a 値段:昇順 --キャラクター名------------+--値段--+--重さ--+--生まれた年-- キティちゃん 400 100 1974 ミスバニー 504 120 1942 スティッチ 504 130 2002 ミッキーマウス 595 130 1928 プーさん 595 150 1921 どの順に並び替えたいですか?選んで下さい。 値段(a:昇順、b:降順)、重さ(c:昇順、d:降順) 生まれた年(e:昇順、f:降順) b 値段:降順 --キャラクター名------------+--値段--+--重さ--+--生まれた年-- プーさん 595 150 1921 ミッキーマウス 595 130 1928 ミスバニー 504 120 1942 スティッチ 504 130 2002 キティちゃん 400 100 1974 どの順に並び替えたいですか?選んで下さい。 値段(a:昇順、b:降順)、重さ(c:昇順、d:降順) 生まれた年(e:昇順、f:降順) c 重さ:昇順 --キャラクター名------------+--値段--+--重さ--+--生まれた年-- キティちゃん 400 100 1974 ミスバニー 504 120 1942 ミッキーマウス 595 130 1928 スティッチ 504 130 2002 プーさん 595 150 1921 [e]---------------------------------------------------------------------- キャラクターの値段を昇順にしても降順にしても並び変えた順番がちゃんとその 順番に並び変えられていることがわかったので実行をして正しいことがわかった。 c) http://roy/~c109066/advertise2.repo-to1.org d) http://roy/~c109066/advertise2/index.html B. a) 自分のトップページ:http://roy/~c109066/ :http://roy/~c109066/advertise2.html b) 仕様書:http://roy/~c109066/advertise2.plan2.txt c) 最高傑作のプログラム:http://roy/~c109066/advertise2.00readme d) 以前のプログラム:http://roy/~c109066/advertise/index.html 改良したプログラム:http://roy/~c109066/advertise2.kairyou e) プレゼン用:http://roy/~c109066/advertise2.repo-to1.org 2. 今回の課題はホームページも作らないといけないし、プログラムも改良しないと いけないので大変だった。 しばらくhtmlに触れてなかったのでどうやってやるのかも忘れていた。 プログラムでは、初めは低い値段の並び方を表示するだけの計画だったが協力してもらっ て値段、大きさ、重さなど入力するだけでその並び方が表示できるようにしても らったので、すごく助かった。 3. ディズニーキャラクターグッズ http://www.disney.co.jp/shopping/ サンリオグッズ http://www.sanrio.co.jp/goods/index.html 協力してくれた友人:庄司京平