訂正点 : プログラミング問題Bの7、10、13、14、17行目を修正した。それに加 えて、計算も間違えていたので修正した。 第 2 回 Ruby の基礎 / 計算が終ったら止まる問題 レポート課題 氏名:齋藤 香織 学籍番号:C1110654 語学クラス:中国語3 コース:政策マネジメントコース 1.筆記問題 一日目で1個、翌日はその3倍の数が孵化するから2日目までに孵化する数は 2日目 : 1*3+1 = 4(個) となるから、3日目以降は 3日目 : 3*3+4 = 13 4日目 : 9*3+13 = 40 5日目 : 27*3+40 = 121 6日目 : 81*3+121 = 364 7日目 : 242*3+364 = 1033 よって500個の卵が全て孵化するのには7日かかるということが分かる。 プログラム問題A #!/usr/koeki/bin/ruby # coding: euc-jp y=0 p=a=1 printf("%3d日目%5d個\n",y+=1,a) while a < 500 p *= 3 a += p printf("%3d日目%5d個\n",y+=1,a) end プログラム問題B 私がHPを開設したところ初日は5人しかこなかったが口コミが広 まり、翌日の来客数は前日の3倍になった。閲覧数が100000人達成するには何日か かるか。というプログラミングを作成した。 #!/usr/koeki/bin/ruby #coding: euc-jp day = 0 nin = ninkei = 5 mokunin = 100000 printf("%3d日目%7d人\n", day +=1, ninkei) while nin < mokunin nin *= 5 ninkei += nin printf("%3d日目%7d人\n", day +=1, ninkei) end printf("%3d日目には100000人を%7d人越えます。\n", day,ninkei-mokunin) <結果> pan{SAITO Kaori}% ./while_snail.rb [~/Ruby] 1日目 5人 2日目 30人 3日目 155人 4日目 780人 5日目 3905人 6日目 19530人 7日目 97655人 8日目 488280人 8日目には100000人を 388280人越えます。 <解説> day 日にち nin 閲覧数 mokunin 目標人数 while~end 条件の間処理を繰り返す。 閲覧数が目標人数を上まわればいいから nin < mokunin printf() 変数を変換指定子を使って表示する実行文 %d 整数を表示する変換指定子 %f 少数を表示する変換指定子 ちなみに %d や %f を %3d などと間に数字をいれると その数字の数だけスペースが空く。 day += 1 日付に1を足していく nin *= 5 人数に5を掛けていく <結果の考察> pan{c111065}% bc -l [~/Ruby] 5 5 5+5*5 30 30+25*5 155 155+125*5 780 780+625*5 3905 3905+3125*5 19530 19530+15625*5 97655 97655+78125*5 488280 bc -l : 計算プログラム <参考> Web 西村先生のホームページ(7.メタボリック症候群) Url : http://roy/~madoka/2012/r1/02/r1_02_09_theme_07_while_meta.html 共同学習者 : 高橋希美 藤川恒介 <感想> 難しかったけど、やりがいがありました。みんなで励まし合いながら、授業でやっ て忘れてたところをお互いに補いながらやれました。今度は何も見ないでプログラミン グを作れるように空いた時間を利用してとり組んでいきたいです。