第7回 基礎プログラミング I レポート課題 氏名:渡辺力 学籍番号:c1091520 語学クラス:英語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) [実行結果] pan{c109152}% ./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