第5回 基礎プログラミング II レポート課題 氏名:遠藤孝之 学籍番号:c1090265 語学クラス:中国語 コース(系):環境サイエンス 1. 筆記問題 A:A.[ E n d o T a k a y u k i] E:0x45 n:0x6E d:0x64 o:0x6F T:0x54 a:0x61 k:0x6B a:0x61 y:0x79 u:0x75 k:0x6B i:0x69 ここで16進数から10進数に変換する。 E = 4 * 16の1乗 + 5 * 16の0乗 = 64 + 5 = 71 よって 答えは 0x45 = 0d71 n = 6 * 16の1乗 + 14 * 16の0乗 = 96 + 14 = 110 よって 答えは 0x6E = 0d110 d = 6 * 16の1乗 + 4 * 16の0乗 = 96 + 4 = 100 よって 答えは 0x64 = 0d100 o = 6 * 16の1乗 + 15 * 16の0乗 = 96 + 15 = 111 よって 答えは 0x6F = 0d111 T = 5 * 16の1乗 + 4 * 16の0乗 = 80 + 4 = 84 よって 答えは 0x54 = 0d84 a = 6 * 16の1乗 + 1 * 16の0乗 = 96 + 1 = 97 よって 答えは 0x61 = 0d97 y = 7 * 16の1乗 + 9 * 16の0乗 = 112 + 9 = 121 よって 答えは 0x79 = 0d121 u = 7 * 16の1乗 + 5 * 16の0乗 = 112 + 5 = 117 よって 答えは 0x75 = 0d117 k = 6 * 16の1乗 + 11 * 16の0乗 = 96 + 11 = 107 よって答えは 0x6B = 0d107 i = 6 * 16の1乗 + 9 * 16の0乗 = 96 + 9 = 105 よって 答えは 0x69 = 0d105 10進数で求めたときの合計 0d71+0d110+0d100+0d111+0d84+0d97+0d121+0d117+0d107 =0d918 そして、16進数に直す 918/16=57 余り6 57/16= 3 余り9 3/16= 0 余り3 出た余り6、9という順番に数を取る。 16進数に変換しても、6と9のまま。 よって 0d918 = 0x396となる。 b:毎日の習慣をプログラム風にする。 夕食を作る過程をプログラム風にした。 def yushoku(gohan,hourennsou,niku) gohan を炊く hourensou を炒める niku を焼く yushoku = gohan と hourensou を混ぜる yushoku = yushoku に niku をかける end yushoku(1合,1束,150g) # 夕食を作るので呼び出す cocoa(カップ1杯、20g、60cc) # ココアを飲むのに呼び出す print("夕食が出来たよ!!\n") 2:プログラミング問題 ジュースがある場合、何通りあるかを調べるプログラ厶 プログラム #!/usr/koeki/bin/ruby def factorial(m) if m == 1 1 else m * factorial(m-1) end end def conbi(jusu,kumiawase) if jusu == kumiawase 1 elsif kumiawase == 0 1 else factorial(jusu) / (factorial(kumiawase) * factorial(jusu - kumiawase)) end end print("ジュースの組み合わせを調べよう\n") print("ジュース何本から調べる?:") a =gets.to_i print("ジュース何本選ぶ?:") b = gets.to_i if a < b print("無理な組み合わせだよ!!\n") elsif printf("%dC%d になり、組み合わせの数は %3d通りです!\n",a,b,conbi(a,b)) end 実行結果 pan{c109026}% ./def_combination.rb [~/Ruby] 組み合わせを調べよう 何本から調べる?:6 何本選ぶ?:4 6C4 になり、組み合わせの数は 15です! pan{c109026}% ./def_combination.rb [~/Ruby] ジュースの組み合わせを調べよう ジュース何本から調べる?:5 ジュース何本選ぶ?:3 5C3 になり、組み合わせの数は 10です! pan{c109026}% ./def_combination.rb [~/Ruby] ジュースの組み合わせを調べよう ジュース何本から調べる?:4 ジュース何本選ぶ?:2 4C2 になり、組み合わせの数は 6通りです! ちゃんと同じになるか確かめ算をする。 6*5*4*3*2*1/(4*3*2*1*(2*1)) 15.00000000000000000000 5*4*3*2*1/(3*2*1*(2*1)) 10.00000000000000000000 4*3*2*1/(2*1*(2*1)) 6.00000000000000000000 確かめ算して3つとも同じ答えになりましたのでプログラムは正しいと言える。 もし本数以上の数を入れたら... pan{c109026}% ./def_combination.rb [~/Ruby] ジュースの組み合わせを調べよう ジュース何本から調べる?:2 ジュース何本選ぶ?:3 無理な組み合わせだよ!! という風に元々ある本数以上の本数の数を入れたら組み合わせが出来ないように した。 変更点 授業中に使ったdef_factorialを改造し、ジュースの組み合わせを出来るように した。 参考文献 http://roy/~madoka/2010/r2/05/05_01_theme_01_diet.html 「脱メタボリック計画」 http://roy/~madoka/2010/r2/05/05_07_theme_05_factorial.html 「階乗計算」 Rubyプログラミング基礎講座 著広瀬雄二 ページ107 「文字コード」 感想 ピッチングマシーンは定期的にボールを投げる。 おもちゃは、機械的で定期的に動くものだと思う。 共同学習者:池田博哉くん 花木剛志くん 藤井駿くん