6 月 6 日のレポートについて XXXX語クラスXX XXXX系 C106XXXX XXXXXXXX 1. A.0xabc = 0b?? まず、16 進数から 10 進数にする。 a×16の2乗 + b×16の1乗 + c×16の0乗 = a(10)×256 + b(11)×16 + c(12)×1 = 2560 + 176 + 12 = 2748 つまり、10 進数では 2748 となる。 次に、10 進数から 2 進数にする。 10 進数から 2 進数にするには、2 で割っていく。 余り 2748 ÷ 2 = 1374 0 1374 ÷ 2 = 687 0 687 ÷ 2 = 343 1 343 ÷ 2 = 171 1 171 ÷ 2 = 85 1 85 ÷ 2 = 42 1 42 ÷ 2 = 21 0 21 ÷ 2 = 10 1 10 ÷ 2 = 5 0 5 ÷ 2 = 2 1 2 ÷ 2 = 1 0 1 ÷ 2 = 0 1 となり、余りを下から順番に並べる。 つまり、0b101010111100 となる。 B.0b11010001 + 0b1 - 0b1100 = 0d?? ひとつずつ 2 進数から 10 進数にする。 0b11010001 1×2の7乗 + 1×2の6乗 + 0×2の5乗 + 1×2の4乗 + 0×2の3乗 + 0×2の2 乗 + 0×2の1乗 + 1×2の0乗 = 128 + 64 + 16 + 1 = 209 0b1 1×2の0乗 = 1 0b1100 1×2の3乗 + 1×2の2乗 + 0×2の1乗 + 0×2の0乗 = 8 + 4 = 12 となり、最初の式に当てはめて、 209 + 1 − 12 = 198 つまり、0d198 となる。 2. ★A★ ○作成したデータの内容の説明 飯森山にあるレンタルビデオ屋の、その日の売り上げと客単価。1日1本あたり、 100円とした。 ○データファイルの張りつけ □iimori.dat 名前 本数 日数 値段 ミッキー 1 2 200 ミニー 2 2 400 ドナルド 4 3 1200 プルート 3 3 900 アリエル 2 4 800 くまのプーさん 4 7 2800 アラジン 3 4 1200 アリス 1 2 200 シンバ 2 2 400 ソラ 3 4 1200 ピグレット 2 3 600 □rental.rb #!/usr/koeki/bin/ruby nin = 0 # 人数 nin の初期化 u = 0 # 売り上げ u の初期化 while iimori = gets if /(\S+)\s+(\S+)\s+(\S+)\s+(\d+)/ =~ iimori # \S+ 文字列 # \s+ 空白 # \d+ 並んでいる数値全て u += $4.to_f # 「$4」は、取り出したい文字列 (\d+)を指している。 to_f は文字列を小数へ nin += 1 end end average = u/nin printf("今回の客単価は %3.1f 円で、総売り上げは %d 円でした。 \n", average,u) ○実行した結果 irsv{c106037}% chmod +x rental.rb [~/Ruby] irsv{c106037}% ./rental.rb iimori.dat [~/Ruby] 今回の客単価は 900.0 円で、総売り上げは 9900 円でした。 ○結果の考察 この日の総売り上げは 9900円で、客単価は 990円だった。 ★B★ ○作成したプログラムの内容 2つのランチメニューしかない黒森のオープンカフェ。片方を残し、片方を新メ ニューに入れ替える。総売り上げ、客単価、どちらのランチメニューの注文が多 いか調べる。 ○データファイルの張りつけ □kuromori.dat 白雪姫 A 650 ピノキオ B 550 ダンボ B 550 バンビ A 650 ターザン B 550 ニモ A 650 チップ A 650 デール B 550 イーヨー B 550 バズ B 550 ドナルド B 550 □cafe.rb #!/usr/koeki/bin/ruby nin = 0 # 人数 nin の初期化 u = 0 # 売り上げ u の初期化 m = Array.new # メニューをしまう配列 while kuromori = gets if /(\S+)\s+(\S+)\s+(\d+)/ =~ kuromori u += $3.to_f # 「$3」は、取り出したい(\d+) [数値] を指している。 m = $2 # 「$2」は、取り出したい(\S+)を指している。 nin += 1 end end average = u/nin printf("今回の客単価は %3.1f 円で、総売り上げは %d 円で、%sが多い。 \n", average,u,m) ○実行した結果 irsv{c106037}% chmod +x cafe.rb [~/Ruby] irsv{c106037}% ./cafe.rb kuromori.dat [~/Ruby] 今回の客単価は 586.4 円で、総売り上げは 6450 円で、Bが多い。 ○結果の考察 黒森のオープンカフェの今回の客単価は、586.4 円で、総売り上げが 6450 円で、 A、Bでは、B のランチメニューの注文のほうが多い。 ★C★ ○作成したプログラムの内容 あるコピー機は、1 枚印刷するときには 10 円のコストがかかる。ところが連続 で 30 枚以上印刷すると 7 円ですむ。コピー機で誰が何枚つくったかの情報を 読み込んで、コピー機の使用にいくらかかったのかを調べた。 ○データファイルの張りつけ □copy.dat 時間 名前 枚数 金額 09:16 ジーニー 21 210 09:56 ジャスミン 37 259 10:35 アブー 14 140 11:21 ジャファー 2 20 11:26 サルタン 9 90 11:55 セバスチャン 42 294 12:25 ティガー 5 50 16:42 オウル 11 110 19:27 ロビン 31 217 21:47 ラビット 8 80 □copy.rb #!/usr/koeki/bin/ruby co = Array.new # 金額をいれる配列 name = Array.new # 名前をいれる配列 mai = Array.new # 枚数をいれる配列 nin = 0 # 人数 nin の初期化 kin = 0 # 和 kin の初期化 while copy = gets if /(\d+)\s+(\S+)\s+(\d+)\s+(\d+)/ =~ copy name = $2 mai = $3 co = $4.to_i kin += $4.to_i nin += 1 printf("%s %s \n",name,mai) end end printf("かかったお金は %d 円でした。\n", kin) ○実行した結果 irsv{c106037}% chmod +x copy.rb [~/Ruby] irsv{c106037}% ./copy.rb copy.dat [~/Ruby] ジーニー 21 ジャスミン 37 アブー 14 ジャファー 2 サルタン 9 セバスチャン 42 ティガー 5 オウル 11 ロビン 31 ラビット 8 かかったお金は 1470 円でした。 ○結果の考察 全体でかかったお金は 1470 円だった。 3.感想 最初はプログラムを起動することができなくて、大変だったが、最終的にプロ グラムができてよかった。また、総売り上げや客単価のプログラムのつくりを 理解することができた。