第7回 基礎プログラミング I レポート課題 氏名:花木剛志 学籍番号:c109126A 語学クラス:英語3 コース(系):地域共創 1、筆記課題 A.0b11110110 = 0x?? 二進数11110110を十六進数に直す。 二進数四桁で十六進数一桁を表すので、1111と0110に分ける。 次に二進数のそれぞれの桁に「重み」をかける。 0b1111 = 1*8 + 1*4 + 1*2 + 1*1 = 0d15 0b0110 = 0*8 + 1*4 + 1*2 + 0*1 = 0d6 十進数の15は十六進数では「f」に相当する。 十進数 十六進数 9以前 十進数と同じ 10 a 11 b 12 c 13 d 14 e 15 f 6はそのままで6。 よって、 0b11110110 = 0xf6 となる。 B.0d256 = 0x?? 十進数256を十六進数に直す。 十六進数に直す場合、まずは十進数256を「16」で割って行き、余りを求める。 256/16 = 16 余り 0 16/16 = 1 余り 0 1/16 = 0 余り 1 答えが0余り1になるまで割って行き、余りを下から並べていくと、十六進数に変 換できる。 よって、 0b256 = 0x100 となる。 2、プログラミング問題 A問題 7人の客が電池を買った日の売り上げと客単価を求めるプログラムを作成した。 [作成したプログラム] #!/usr/koeki/bin/ruby taipu = Array.new sell = Array.new sum = 0 i = 0 open("battery.dat", "r") do |f| while buy = f.gets if/(\S+)\s+(\d+)/ =~ buy taipu[i] = $1 sell[i] = $2.to_f if taipu[i] == "A" a = 400 * sell[i] elsif taipu[i] == "B" a = 300 * sell[i] else a = 50 * sell[i] end sum += a i += 1 end end end k = 0 print("売上数\n") while k < taipu.length printf("%-10s\t%d\n", taipu[k], sell[k]) k += 1 end tanka = sum /7 printf("その日の売り上げは %d円です。 \n", sum) printf("客単価は %2.1f 円です。 \n", tanka) [実行結果] papan{c109126}% ./open_battery.rb battery.dat [~/Ruby] 売上数 A 5 C 4 B 2 C 6 B 3 A 1 C 3 その日の売り上げは 4550円です。 客単価は 650.0 円です。 [確認、考察] [売り上げ] 400*5 2000 50*4+2000 2200 300*2+2200 2800 50*6+2800 3100 300*3+3100 4000 400*1+4000 4400 50*3+4400 4550 [客単価] 4550/7 650.00000000000000000000 となり、実行したプログラムとbcーlで計算した結果が一致した。 3、感想 今回はかなり難しかった。友人に教えられながら作成したが、ただ写すだけではな く、理屈を考えながら作成したので、ちゃんと自分の実力になったと思う。協力 してくれた友人に感謝したい。 4、協同製作者:横山広樹君 参考文献など:http://roy/~madoka/2009/r1/07/crt.html http://roy/~naoya/ruby/8.html