第7回 基礎プログラミング I レポート課題 氏名:及川 雄寛 学籍番号:c1090302 語学クラス:英語3 コース:政策マネジメント 1. A.この問題は、2進数を16進数に変換するので、2進数0b11110110を16進っ数に変 換するには、11110110を右から4桁ずつ区切って行って、変換する。区切って みると、1111、0110に区切ることが出来る。これを16進数に変換表示すると、 1111=f、0110=6と変換することが出来る。よって、この問題の答えは 0b11110110=0xf6となる。 B.この問題は、10進数を16進数に変換するので、10進数を1回2進数に変換してか ら、16進数に変換する。10進数を2進数に変換するには、問題の256を2で割っ ていく。 余り 2)256 0 2)128 0 2) 64 0 2) 32 0 2) 16 0 2) 8 0 2) 4 0 2) 2 0 2) 1 1 これを下から読むと、100000000となる。 これを16進数に変換するには、右から4桁毎に区切って行く。行なってみると、 1、0000、0000となる。16進数に変換すると、 1=1、0000=0となる。 よって答えは、0x100となる。 参考文献:Ruby基礎プログラミング基礎講座/廣瀬 雄二 より 第8講:「計算機の内部表現」 -------------------------------------------------------------------------------- 2. A. a.考えた設定 乾電池のその日の売り上げを出すには、1週間の売り上げを出してから、1日の 平均売り上げを出すことができると考えた。また、乾電池のタイプが3つある が、1個の値段は50円なので、売り上げた電池の箇数の値段を出せば良いと考 えた。客単価は1週間の売り上げから1週間来たお客の人数を割れば、出せると 考えた。 b.作成したデータ:battery.dat #売上げ個数 #買った客数 1 1 2 2 3 3 4 4 5 5 6 6 8 8 作成したプログラム:open_battery.rb #!/usr/koeki/bin/ruby custmer = 0 #客数 battery = 0 #電池数 day = 0 #日数 $KCODE= 'e' day=0 total_custmer = 0 total_battery =0 open("battery.dat","r")do |t| while shop =t.gets # p shop # print shop if /(\d+)\s+(\d+)/ =~ shop custmer = $2.to_i battery = $1.to_f printf("%d日目: \t%d 人 \t%d 個\t\t 売上げ %d 円\n", day,custmer,battery, battery*50) end total_custmer += custmer #1週間に来た客の数 total_battery += battery #1週間に売り上げた電池の数 day += 1 end end printf("1週間で %d 人が 電池を %d個を買って行きました。 \n",total_custmer,total_battery) printf("1週間の売り上げは %d 円です。\n", total_battery *50 ) printf("一日の売り上げは %2.1f 円です。 \n", total_battery*50/7) printf("客単価は %d 円\n",1450/total_custmer) #p custmer #p day c.元にしたプログラムからの変更点 今回は、ちょっと難しい部分があったので、昨年のレポートで良いレポートと して、紹介されていたものを参考にさせていただいて、それを今回のレポート の内容用に変更した。 d.実行した結果 pan{c109030}% ./open_battery.rb [~/Ruby] 1日目: 1 人 1 個 売上げ 50 円 2日目: 2 人 2 個 売上げ 100 円 3日目: 3 人 3 個 売上げ 150 円 4日目: 4 人 4 個 売上げ 200 円 5日目: 5 人 5 個 売上げ 250 円 6日目: 6 人 6 個 売上げ 300 円 7日目: 8 人 8 個 売上げ 400 円 1週間で 29 人が 電池を 29個を買って行きました。 1週間の売り上げは 1450 円です。 一日の売り上げは 207.1 円です。 客単価は 50 円 考察:このプログラムが正しく動いているとは、限らないのでbc -lで確かめ算を 行う。 1週間来た客の総人数 pan{c109030}% bc -l [~/Ruby] 1+2+3+4+5+6+8 29 1週間売り上げた電池の箇数 pan{c109030}% bc -l [~/Ruby] 1+2+3+4+5+6+8 29 1週間の売り上げ pan{c109030}% bc -l [~/Ruby] 50 + 100 + 150 + 200 + 250 + 300 + 400 1450 1日の平均売り上げ pan{c109030}% bc -l [~/Ruby] 1450/7 207.14285714285714285714 客単価 pan{c109030}% bc -l [~/Ruby] 1450/29 50.00000000000000000000 確かめ算を行った結果、このプログラムは正しく動いたといえる。 感想:今回の授業はすごく進むスピードが早かったので、難しく感じたが、問題 を解いていくうちになれていくことができたので、良かった。 b. b問題もデータを作ってみたが、プログラムが動かないのが分からなかったので、 断念した。 参考文献: 第7回基礎プログラミング I 講義ノート/西村 まどか http://roy/~madoka/2010/r1/07/ 2009年度 第7回 基礎プログラミングI 講義ノート/西村 まどか http://roy/~madoka/2009/r1/ レポート講評 良かったレポート その4 http://roy/~madoka/2009/r1/07/rpt/c108061/open_rental.desc 共同学習者:川島 哲