第7回 基礎プログラミング I レポート課題 氏名:成澤 龍空 学籍番号:c1071658 語学クラス:英語 コース(系):経営系 1. A.まず10進数に変換する。 0b11110110 = (1 * 2) * 7 + (1 * 2 ) * 6 + (1 * 2) * 5 + (1 * 2) * 4 + (0 * 2) * 3 + (1 * 2) * 2 + (1 * 2) * 1 + (0 * 2) * 0 0xF6 =128 + 64 + 32 + 16 + 4 + 2 =246 それから16進数に変換する 246 / 16 = 15 余り 6 よって0b11110110 = 0xF6 B. 256 / 16 = 16 余り 0 よって0d256 = 0x10 2. A. プログラム本体(open_battery.rb) #!/usr/koeki/bin/ruby print("売上票\n\n") come = Array.new typea = Array.new typeb = Array.new typec = Array.new day = 1 open("battery.dat","r") do |shop| i = 0 while uriage = shop.gets if /(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/=~ uriage come[i] = $1.to_f typea[i] = $2.to_f typeb[i] = $3.to_f typec[i] = $4.to_f printf("%d日目 来客人数 %d 人\n", day,come[i]) printf("Aの売上げ数 %d 個 売上げ %d 円\n", typea[i],typea[i]*400) printf("Bの売上げ数 %d 個 売上げ %d 円\n", typeb[i],typeb[i]*300) printf("Cの売上げ数 %d 個 売上げ %d 円\n", typec[i],typec[i]*50) total = typea[i]*400 + typeb[i]*300 + typec[i]*50 printf("本日の売上げ合計: %d 円\n", total) printf("1人単価 %0.2f 円 (小数第三位は切り捨て。)\n\n",total/come[i]) day += 1 i += 1 end end end 作成したデータ(battery.dat) #来客数 #タイプA #タイプB #タイプC 18 9 10 6 20 12 7 12 15 7 6 15 19 17 13 11 26 18 20 14 17 11 10 16 実行結果 Aの売上げ数 7 個 売上げ 2800 円 Bの売上げ数 6 個 売上げ 1800 円 Cの売上げ数 15 個 売上げ 750 円 本日の売上げ合計: 5350 円 1人単価 356.67 円 (小数第三位は切り捨て。) 4日目 来客人数 19 人 Aの売上げ数 17 個 売上げ 6800 円 Bの売上げ数 13 個 売上げ 3900 円 Cの売上げ数 11 個 売上げ 550 円 本日の売上げ合計: 11250 円 1人単価 592.11 円 (小数第三位は切り捨て。) 5日目 来客人数 26 人 Aの売上げ数 18 個 売上げ 7200 円 Bの売上げ数 20 個 売上げ 6000 円 Cの売上げ数 14 個 売上げ 700 円 本日の売上げ合計: 13900 円 1人単価 534.62 円 (小数第三位は切り捨て。) 6日目 来客人数 17 人 Aの売上げ数 11 個 売上げ 4400 円 Bの売上げ数 10 個 売上げ 3000 円 Cの売上げ数 16 個 売上げ 800 円 本日の売上げ合計: 8200 円 1人単価 482.35 円 (小数第三位は切り捨て。) 考察 確かめ算を行なってみた。 9 * 400 + 10 * 300 + 6 * 50 6900 6900 / 18 383.33333333333333333333 12 * 400 + 7 * 300 + 12 * 50 7500 7500 / 20 375.00000000000000000000 7 * 400 + 6 * 300 + 15 * 50 5350 5350 / 15 356.66666666666666666666 17 * 400 + 13 * 300 + 11 * 50 11250 11250 / 19 592.10526315789473684210 18 * 400 + 20 * 300 + 14 * 50 13900 13900 / 26 534.61538461538461538461 11 * 400 + 10 * 300 + 16 * 50 8200 8200 / 17 482.35294117647058823529 よってこのプログラミングは正確に機能したと言える。 また、小数が多いのでto_fを使うことによって少数点以下の数字を読み込んで %0.2fを使って小数第三位を切り捨てることにした。 3.感想 完成したプログラムがなかなか動かなくて苦労した。 最終的に機能して良かった。 4.参考アドレス http://www.asahi-net.or.jp/~ax2s-kmtn/ref/bdh.html 協力していただいたTAの方 大沼 拓海 さん