第7回 基礎プログラミング I レポート課題 氏名:後藤輝久 学籍番号:c1090650 語学クラス:中国語1 コース(系):地域共創コース 1、筆記問題 A 0b11110110は2進数だから、まず10進数に直す。 0 * 1 = 0 1 * 2 = 2 1 * 4 = 4 0 * 8 = 0 1 * 16 = 16 1 * 32 = 32 1 * 64 = 64 1 * 128 = 128 0 + 2 + 4 + 0+ 16 + 32 + 64 + 128 = 246 よって、 10進数は0d246となる。 次に16進数に直す。 246 / 16 = 15 余り6 15 / 16 = 0 余り15 よって、 16進数は0xf6 B 0d256は10進数だから、まず16進数に直す。 256 / 16 = 16 余り0 16 / 16 = 1 余り0 1 / 16 = 0 余り1 よって 16進数は0x100となる。 2、プログラム問題 A #タイプ #(パック)数売り上げ A 4 B 5 C 6 A 4 B 7 C 9 上のようなデータを作った。 プログラム #!/usr/koeki/bin/ruby itemcod = Array.new #Arryは配列を作るという命令 number = Array.new sum = 0 #変数を0とする。 i = 0 open("battery.dat" ,"r") do |f| #ここにはbattery.datのデータを読み込む ようにする。 while buy = f. gets if /(\S+)\s+(\d+)/ =~ buy itemcod[i] = $1 number[i] = $2.to_f if itemcod[i] == "A" sell = 400 * number[i] #Aの値段 elsif itemcod[i] == "B" sell = 300 * number[i] #Bの値段 else itemcod[i] == "C" sell = 50 * number[i] #Cの値段 end #ifはここで終り sum +=sell i +=1 end end end k = 0 print("売上数\n") while k < itemcod.length print("%-10s\t%d\n",itemcod[k], number[k]) k +=1 end #whileはここで終り tanka = sum / 6 printf("その日の売上は %d円です。\n",sum) printf("客単価は %2.1f 円です。 \n", tanka) 実行結果 売上数 %-10s %d A4.0%-10s %d B5.0%-10s %d C6.0%-10s %d A4.0%-10s %d B7.0%-10s %d C9.0その日の売上は 7550円です。 客単価は 1258.3 円です。 A,4 + 4 = 8 8 * 400 = 3200 B,5 + 7 = 12 12 * 300 = 3600 C,6 + 9 = 15 15 * 50 = 750 A + B + C = 3200 + 3600 + 750 = 7550 7550 / 6 = 1258,333333333333 よって 計算した結果正しかったので、このプログラムは正常に機能している。 考察 今回のプログラムは配列と計算を組み合わせたものだったので難しかった。 最初tankaやsumやitemucodなど決められたところに入力せずに実行したが失敗し た。友達に指摘され適切なところに入力した結果成功した。 open("battery.dat" ,"r") do |f|の部分んで他に作ったデータを引用できるら しい。 このプログラムはABCだけではなく、もっとより多くのものの合計と平均をだせ る便利なプログラムだと思う。 3、感想 今回の課題で1番頑張ったところは、進数計算です。計算は得意ではないのです が、計算が得意な人から教えてもらい計算は完璧にしていきたいと思います。 プログラムは1つずつ意味を確かめて頑張りたいです。 共同学習者 小関文紀 横山広樹 花木剛志