第 5 回 何度も呼び出そう レポート課題 氏名:見川英駿 学籍番号:c1101856 語学クラス:中国語3 コース(系):地域共創コース 1.筆記問題 A. hidetoshi h → 0x68 i → 0x69 d → 0x64 e → 0x65 t → 0x74 o → 0x6f # f = 15 s → 0x73 h → 0x68 i → 0x69 10進数に直す|! h → 0x6 8 i → 0x6 9 d → 0x6 4 e → 0x6 5 t → 0x7 4 o → 0x6 15 s → 0x7 3 h → 0x6 8 i → 0x6 9 1の位、10の位と分けて計算する。 <1の位> 8+9=17 17/16=1余り1 んで1は繰り上がる。 <10の位> 6+6+1=13 #1を足したのは繰り上がるから 13=d さっき出した 10の位と1の位を足してd1となる。 この計算を繰り返していくと結果が次のようになる。 d1 + 64 = 135 135 + 65 = 19a 19a + 74 = 20e 20e + 6f = 27d 27d + 73 = 2f0 2f0 + 68 = 358 358 + 69 = 3c1 3c1 →10進数→ 961 6*16 + 8 = 104 6*16 + 9 = 105 6*16 + 4 = 100 6*16 + 5 = 101 7*16 + 4 = 116 6*16 +15 = 111 7*16 + 3 = 115 6*16 + 8 = 104 6*16 + 9 = 105 104 + 105 + 100 + 101 + 116 + 111 + 115 + 104 + 105 =961 16)961 1 ---- 16) 60 12 ----- 3 12は変換するとcなので余りを下から読んで3c1となり同じになる! B. 帰宅してからの流れをプログラム風に書き直します。 def diner(rice, meat, vegetable) rice を炊く meat を取り出す vegetable を切る diner = meat と vegetable を炒める diner = rice と diner を合わせる end : diner(米 1.5 合,肉 250g,野菜 300g ) print("夕飯完成!\n") #メッセージ 2.プログラム問題 A. 作成したプログラム #!/usr/koeki/bin/ruby def factorial(m) # defメソット if m == 1 # m が 1 だとしたら‥ 1 else m * factorial(m-1) end end def chose(a, b) # defメソット factorial(a) / (factorial(b) * factorial(a-b)) # m! # -------- # (n!(m-n)!) end print("1つの班の中から、代表者を選ぶ。\n\n") print("代表者に選ばれる班員の組み合わせは何通りか?\n\n") STDERR.print("班の全人数 : ") ninzu = gets.to_i STDERR.print("選ばれる人数 : ") head = gets.to_i printf("%d人選んだときの組み合わせは%d通りです。\n",head ,chose(ninzu,head)) 実行結果 pan{c110185}% ./def_combination.rb [~/Ruby] 1つの班の中から、代表者を選ぶ。 代表者に選ばれる班員の組み合わせは何通りか? 班の全人数 : 8 選ばれる人数 : 4 4人選んだときの組み合わせは70通りです。 3.感想 機械的な操作を繰り返しているものは駅の改札口しか思い浮かばなかった。毎日 のように切符やSUICAを利用して改札を抜けるのはまさしく繰り返しと思った。 4.参考文献 16進数計算機 http://www.ccn2.aitai.ne.jp/~keikun/16.html 「階乗計算」著者:西村まどか http://roy/~madoka/2011/r2/05/r2_05_07_theme_05_factorial.html 共同学習者 ☆*菊地瑞紀*☆