第7回 基礎プログラミング I レポート課題 氏名:木内雄 学籍番号:c1090561 語学クラス:中国語 コース(系):政策 1.筆記問題 A.0b11110110 まずは10進数に直す。 (0*2^0)+(1*2^1)+(1*2^2)+(0*2^3)+(1*2^4)+(1*2^5)+(1*2^6)+(1*2^7) =0+2+4+0+16+32+64+128=246 10進数を16進数に直す 246/16=15 余り6 15/16=0 余り15 よって16進数は0xf6 B.0d256 まず10進数に直す。 256/16=16 余り0 16/16 =1 余り0 1/16 =0 余り1 よって16進数は0x100 2.プログラム問題 <プログラム本体> #!/usr/koeki/bin/ruby taip = Array.new #候補のタイプを選ぶ。 uriage = Array.new #候補の売り上げを選ぶ。 total = 0 i = 0 #候補を数える。 open("battery.dat" , "r") do |batte| #データを読み込ませる。 while battery = batte.gets if /(\S+)\s+(\d+)/ =~ battery #空白文字列や文字列をさがす。 taip[i] = $1 uriage[i] = $2.to_f if taip[i] == "A" a = 400 * uriage[i] elsif taip[i] == "B" a = 300 * uriage[i] else a = 50 * uriage[i] end total += a i += 1 end end end k = 0 print("売上数\n") while k < taip.length printf("%-10s\t%d\n", taip[k], uriage[k]) k += 1 end tanka_a = total / 6 printf("客単価は %2.1f 円です\n",tanka_a) printf("その日の売上は %d 円です\n",total) 実行結果 pan{c109056}% ./open_battery.rb [~/Ruby] 売上数 A 1 B 2 C 3 A 2 B 3 C 1 客単価は 483.3 円です その日の売上は 2900 円です 確かめ算 pan{c109056}% bc -l [~/Ruby] (400*1)+(300*2)+(50*3)+(400*2)+(300*3)+(50*1) 2900 2900/6 483.33333333333333333333 考察 確かめ算よりこのプログラムは正しいことがわかった。 客単価を出すためにtotalを売り上げ数で割った。 感想 今回もとても難しく一人では全く出来なかった。最初作っていたプログラムが問 題と全くあっていなく混乱してしまった。もっと専門的な感想を書きたかったが 何も書けず自分の知識の無さを痛感した。 参考文献 正規表現と Ruby 言語でのプログラミング http://roy/~madoka/2010/r1/07/ 西村まどか 2進数、16進数と10進数 http://www.asahi-net.or.jp/~ax2s-kmtn/ref/bdh.html 共同学習者 久保田瑛一郎 横山広樹 青木 千紗 酒井信市郎 永井絹人