第7回 基礎プログラミング I レポート課題 氏名:永井 絹人 学籍番号:c109120 語学クラス:英語1 コース(系):政策 /////////////////////////////////////////////////////////////////////////////// 1、筆記問題 A、まず、2進数を10進数に直す。 0b11110110 = (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 よって0b11110110は0d246となる。 さらに0d246を16進数に直す。 0d246 = 246/16 = 15 余り6 15/16 = 16 余り15 よって、16進数は0xf6 0d246 = 0xf6 B、10進数だから、16進数に直す。 0d256 = 256/16 = 16 余り0 = 16/16 = 1 余り0 = 1/16 = 0 余り1 よって16進数は0x100 0d256 = 0x100 2、プログラム問題 A、 //(プログラムbattery.dat)// # タイプ #(パック)数売上げ A 3 B 2 A 2 C 1 C 7 B 4 B 3 A 1 C 2 //プログラム(open_battery.rb)// #!/usr/koeki/bin/ruby taip = Array.new uriage = Array.new i = 0 total = 0 open("battery.dat","r") do |denti| while biribiri = denti.gets if /(\S+)\s+(\d+)/ =~ biribiri # print biribiri taip[i] = $1 uriage[i] = $2.to_i if taip[i] == 'A' a = 400 * uriage[i] elsif taip[i] == 'B' a = 300 * uriage[i] elsif taip[i] == 'C' 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 nedan = total / 9 printf("客単価 %2.1f 円\n",nedan) printf("本日の売上 %d円\n",total) //実行結果// pan{c109120}% ./open_battery.rb [~/Ruby] 売上数 A 3 B 2 A 2 C 1 C 7 B 4 B 3 A 1 C 2 客単価 622.0 円 本日の売上 5600円 //考察// datの電池タイプと売上の数字がちゃんと表示されていたが計算があってるか わからないので確かめ算をしてみた。 pan{c109120}% bc -l [~/Ruby] (400*3)+(300*2)+(400*2)+(50*1)+(50*7)+(300*4)+(300*3)+(400*1)+(50*2) 5600 5600/9 622.22222222222222222222 quit ktermは四捨五入はされないので、結果的に合計と客単価が正しいのでこのプログラムは正常である。 //感想// 今回はとても難しく心が折れるくらい失敗を繰り返したが、皆の力を合わせて試 行錯誤しやっとの思いで完成することが出来た。今回の成功の秘結はとりあえず、 考えられるやり方をかたっぱしからすることでした。これからも頑張ってプログラミングを取り組みます。 //参考文献// 「券売機のしくみ」 http://roy/~madoka/2010/r1/07/07_13_theme_11_vendingmachine.html 「自動印刷を行うには」 http://roy/~madoka/2010/r1/07/07_15_theme_13_filewrite.html 「駅名だけを切り出そう」 http://roy/~madoka/2010/r1/07/07_08_theme_07_parenthesis.html //協力者// ・酒井 信市郎 ・木内 雄 ・横山 ・久保田