第7回 基礎プログラミングI レポート課題 氏名:XXXXXXXX 学籍番号:c109XXX 語学クラス:中国語1 コース:社会福祉 1 A.0b11110110(2進法→16進法) 右から4桁ずつ区切ると 「1111」「0110」 1111 → b 0110 → 6 よって答えは0xb6となる B.0d256 (10進法→2進法) 256/2 = 128余り0 128/2 = 64余り0 64/2 = 32余り0 32/2 = 16余り0 16/2 = 8余り0 8/2 = 4余り0 4/2 = 2余り0 2/2 = 1余り0 1/2 = 0余り1 よって0b100000000となる 0b100000000(2進法→16進法) 右から4けたずつ区切ると 「0001」「0000」 「0000」 0001 → 1 0000 → 0 0000 → 0 よって答えは0x100となる 2.A (a) 乾電池のデータを400円*x300円*x50円*xにしたいのでregexp_readdata.rbを 参照にして、open_battery.rbを作成した。 (b) #!/usr/koeki/bin/ruby day =0 #日にち ttotal = 0 #総数 tabattery = 0 #Aタイプ tbbattery = 0 #Bタイプ tcbattery = 0 #Cタイプ open("battery.dat","r") do |battery| while shop = battery.gets if /(\d+)\s+(\d+)\s+(\d+)/ =~ shop ttotal = $1.to_f abattery = $2.to_f bbattery = $3.to_f cbattery = $4.to_i printf("%d 日目\t %d 人\t Aタイプ%d 個\t Bタイプ%d 個\t Cタイプ%d 個\t Aタイプ売上げ %d 円\t Bタイプ売上げ %d 円\n",day + 1,total,abattery,bbattery,abattery*400,bbattery*300,cbattery*50) day += 1 ttotal += total tabattery += abattery tbbattery += bbattery tcbattery += cbattery end end end #実行結果を通して調べた、求めたい値を表示させる部分 printf("総売上げ %d 円 客単価 %2.1f 円\n",tabattery*400+tbbattery*300,(tabattery*400+tbbattery*300)/ttable) printf("Aタイプの総売上げ %d 円\n",tabattery*400) printf("Bタイプの総売上げ %d 円\n",tbbattery*300) printf("Cタイプの総売り上げ %d 円\n",tcbattery*50) #条件により実行される部分 if tabattery > tbbattery elsif tabattery < tbbattery else tabattery = tbbattery end bateery.dat #Aタイプ #Bタイプ #Cタイプ 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 (c) open("station.dat","r")をopen("battery.dat","r")にした。 |candidate|を|battery|にした。 candidate.getsをbattery.getsにした。 (d) 1日目 1 人 Aタイプ1 個 Bタイプ1 個 Cタイプ1 個 Aタイプ売上げ 400 円 Bタイプ売上げ 300 円 Cタイプ売り上げ 50 円 2 日目 2 人 Aタイプ2 個 Bタイプ2 個 Cタイプ2 個 Aタイプ売上げ 800 円 Bタイプ売上げ 600 円 Cタイプ売り上げ 100 円 3 日目 3 人 Aタイプ3 個 Bタイプ3 個 Cタイプ3 個 Aタイプ売上げ 1200 円 Bタイプ売上げ 900 円 Cタイプ売り上げ 150 円 4 日目 4 人 Aタイプ4 個 Bタイプ4 個 Cタイプ4 個 Aタイプ売上げ 1600 円 Bタイプ売上げ 1200 円 Cタイプ売り上げ 200 円 5 日目 5 人 Aタイプ5 個 Bタイプ5 個 Cタイプ5 個 Aタイプ売上げ 2000 円 Bタイプ売上げ 1500 円 Cタイプ売り上げ 250円 6 日目 6人 Aタイプ6 個 Bタイプ6 個 Cタイプ6 個 Aタイプ売り上げ 2400 円 Bタイプ売り上げ 1800 円 Cタイプ売り上げ 300円 総売上げ 15750 円 客単価 2625.0 円 Aタイプの総売上げ 8400 円 Bタイプの総売上げ 6300 円 Cタイプの総売り上げ 1050 円 (e) bc -lで確かめた結果 300+1800+2400+250+1500+2000+200+1200+1600+150+900+1200+100+600+800+50+300+400 15750 15750/6 2625.0 400+800+1200+1600+2000+2400 8400 300+600+900+1200+1500+1800 6300 50+100+150+200+250+300 1050 よって、正しいことがわかった。 (f) 一番最後に表記した。 3 今回も難しかったです。まず最初にどんなプログラムを作ればいいのかについて 頭を悩まされました。また自分の考えていることをemacsになんて入力したらい いのかひたすら西村先生のページを読み自分なりにプログラムをして実行をしま したが上手くいかず、友達に助けてもらいながらやりました。 難しかったけれどやっていくことで自分の力になっていったので取り組んで良かったで す。 参考文献: 基礎プログラミングI 第4回 プログラミングの方法 「16進数のまとめ」 西村まどか http://roy/~madoka/2010/r1/04/04_13_appendix_03_hexdecimal.html 基礎プログラミングI 第7回 正規表現とRuby言語でのプログラミング「データを 読み込むようにするには」 西村まどか http://roy/~madoka/2010/r1/07/07_09_theme_08_fileread.html 基礎プログラミングI 第7回 正規表現とRuby言語でのプログラミング 「候補駅 を選べるようにする」 西村まどか http://roy/~madoka/2010/r1/07/07_11_theme_09_candidate.htm