6月6日のレポートについて 語学クラス:XXXX語XX 系:XXXX系 学籍番号:c106XXXX 氏名:XXXXXXXX 1、A.0xabc = 0b a b c とそれぞれ1つの数字として例える。 西村先生のホームページを参考に16進数を10進数に直すと a=10 b=11 c=12 と表すことが出来る。 10進数に直した数字を使い2進数の求め方を参考に計算すると 0xabc= a×16の2乗 + b×16の1乗 + c = 10×256 + 11×16 + 12 = 2560 + 176 + 12 =2748 16進数を10進数に直すと0d=2748となる この計算では2進数の計算を使うので 0d=2748 を2進数にすると 2748÷2 = 余り0 1347÷2 = 余り0 687÷2 = 余り1 343÷2 = 余り1 171÷2 = 余り1 85÷2 = 余り1 42÷2 = 余り0 21÷2 = 余り1 10÷2 = 余り0 5÷2 = 余り1 2÷2 = 余り0 ーーーーーーーーーーー 1 これを2進数に直すと 0b= 1010 1011 1100 となる。 この数字を16進数に直すと 1010=a 1011=b 1100=c 0xabcとなる。 B.0b11010001 + 0b1 - 0b1100 = 0d?? 10進数の表で見ると 0b 1101/0001 = =2の7乗×1 + 2の6乗×1 + 2の5乗×0 + 2の4乗×0 + 2の3乗×0 + 2の2乗×0 + 2の1乗×0 + 2の0乗×1 =128 + 64 + 0 + 16 + 0 + 0 + 0 + 1 0b=209 0b 1 = 1 0b 1100 = 12 と直し、計算をすると 0b 11010001 + 0b1 - 0b1100 209 + 1 - 12 =210 - 12 =198 0d=198となる。 参照:http://roy/~madoka/2007/r1/04/04-12-binary2.html「2進数、16進数変換(2)」 2、できるところまで答えよ。 A、飯森山にあるレンタルビデオ屋の売り上げ伝票をまとめたデータ iimori.dat について、その日の売り上げと客単価を計算させるプログラム <データ> 借りた人の名前 借りた本数 借りた日にち い (No.1) 2 1 ろ (No.2) 5 7 は (No.3) 5 7 に (No.4) 3 2 ほ (No.5) 2 5 へ (No.6) 6 4 と (No.7) 3 1 ち (No.8) 2 1 り (No.9) 4 6 <お店でレンタル数1日の平均を調べるプログラム> #!/usr/koeki/bin/ruby n = 0 #人数 sum = 0 #合計 while rental = gets #rentalのデータ−からとる if /(\S+)\s+(\S+)\s+(\d+)/ =~ rental # 文字列・空白文字列・数字をrentalのデータをもとにプログラムを作る sum += $3.to_f #平均数を調べてくれる n += 1 #人数 end #ifの終わり end #whileの終わり average = sum/n #平均を出す式 合計÷人数 printf("レンタル平均数は %4.1f 本でした。 \n" , average) #結果表示 *結果* レンタル平均数は 3.6 本でした。 *bc -lを使い計算する* 2+5+5+3+2+6+3+2+4 32 32/9 3.55555555555555555555 プログラムででた答えとあう <お店の総売り上げと客単価を調べるプログラム> #!/usr/koeki/bin/ruby n = 0 #人数 sum = 0 #合計 average = 0 #平均 while line = gets #lineからとる if/\S+\s+\S+\s+(\d+)\s+(\d+)/ =~ line #文字列・空白・数値 sum += $1.to_i * $2.to_i * 100 #本数×日数×100(レンタル1本あたりの料金) n += 1 #人数 end #if終わり end #while終わり average = sum/n # 平均を出す式 合計÷人数 printf("本日の総売り上げは %d 円です。 \n" , sum) #売り上げの結果表示 printf("客単価は %d 円です。 \n" , average) #客単価の結果表示 *結果* 本日の総売り上げは 14100 円です。 客単価は 1566 円です。 *bc -lを使って計算する* ○総売り上げの計算 (2*1*100)+(5*7*100)+(5*7*100)+(3*2*100)+(2*5*100)+(6*4*100)+(3*1*100)+(2*1*100)+(4*6*100) 14100 ○客単価の計算 合計 ÷ 人数 1566.66666666666666666666 この二つの答えはプログラムと一緒の答えになった。 B、2 2つのランチメニュー(A: 650 円, B: 550 円)しかない黒森のオープンカフェ。 片方を残し、片方を新メニューに入れ替えたい。売り上げ伝票から総売り上げ、 客単価、どちらのランチメニューの注文が多いかが分かる プログラム 。 <データ> お客さん 選んだランチ M.H B A.K A S.H A O.B B H.M A Y.O B K.Y B S.S A S.T A T.O B <お店の売り上げ、客の人数、客単価を調べるプログラム> #!/usr/koeki/bin/ruby gohanA = 0 #ランチA gohanB = 0 #ランチB n = 0 #人数 sum = 0 #合計 average = 0 #平均 while line = gets #lineからとる if /\S+\s+(\w+)/ =~ line if $1 == "A" # $1がAというのだったら gohanA += 1 #gohanAに+1 elsif $1 == "B" #そうじゃなかったら gohanB += 1 #gohanBに+1 end #if(2)終わり n += 1 #人数に一人足す end # if終わり end #while終わり sum = gohanA * 650 + gohanB * 550 #gohanA × 650(gohanAの金額) + gohanB × 550(gohanBの金額) average = sum/n # 平均= 合計 ÷ 人数 if gohanA> gohanB #もしもgohanAが人気だったら print("★Bを新メニューにする★\n") #結果表示 elsif gohanA == gohanB #もしも二つのメニューが同じ売れ行きだったら print("メニューについてもう少し考える。\n") #結果表示 else #gohanAだったら print("*Aを新メニューにする*\n") #結果表示 end # if終わり printf("本日の売り上げは %d 円です。 \n" , sum) #結果表示 printf("お客の人数は %d 人です。 \n" , n) #結果表示 printf("客単価は %d 円です。 \n" , average) #結果表示 <結果> ★Bを新メニューにする★ 本日の売り上げは 6650 円です。 お客の人数は 11 人です。 客単価は 604 円です。 *bc -lを使い計算する* ●売り上げを調べる (6*650)+(5*550) 6650 ●客単価を調べる 合計 ÷ 人数 6650/11 604.54545454545454545454 客の数はデータで数えるとし知ることができるので計算する必要はない。 二つの計算をしたらプログラムと答えになった。 参照:http://roy/~madoka/2007/r1/08/08-04-addition.html「データから平均を 求めるには」 3、感想 今回の課題は授業でやったことの応用で平均を求めてるプログラムや16進数の計 算など今回の課題ではいろいろがんばりました。来週の授業でするプログラム作 成を覚えれるように頑張りたいです。