Subject:第2回 プログラミングの練習 To: ruby-04-21@e.koeki-u.ac.jp Date: Sat, 24 Apr 2010 01:37:52 +0900 (JST) X-Mailer: Mew version 4.2 on Emacs 23.1 / Mule 6.0 (HANACHIRUSATO) 氏名: えーのぉ 学籍番号: C109024* クラス: 英語5 1. 自分が考えた問題文 毎食3号の白米をぺろりとたいらげてしまうA子ちゃんの 現在のウエストサイズは100cmで27号のデニムをはいています。 そんなA子ちゃんはある日、うっかり間違って9号(63cm)の ワンピースを買ってきてしまいました! このワンピースを着るためにダイエットを始めたA子ちゃん。 1ヶ月に3cmずつウエストダウンすると何ヶ月後に 例のワンピースを着れるようになるでしょうか? 2. それを解くために作成したプログラム #!/usr/koeki/bin/ruby waist = waist0 = 100 month = 0 while waist > 63 printf("%d ヶ月後 \t %d [cm]\n",month += 1, waist -= 3) end 3. どのように考えて改良したかの説明 ■先生のプログラム p=p0=100000 →人口 は p0 と書いて 100000 ( p0 とは最初の値) という意味だと思った y=0 → 0 年から開始という意味だと思った while p < 2*p0 →人口は 200000 人以内を範囲にして計算するという意味だと思った p *= 1.1 →人口が 10% ずつ増加する 人口× 110% を繰り返すという意味だと思った printf("%3d年\t%d人\n", y+=1, p) → %3d 年で t%d 人まで増加するのを、1年ごとに算出して 画面に提示するという意味だと思った ■私のプログラム waist = waist0 = 100 →ウェストは waist0 と書いて 100 という意味 ( waist0 とは最初の値) (先生でいう p=p0=100000 の部分) month = 0 →0ヶ月から開始という意味 (先生でいう p=0 の部分) while waist > 63 →ウェストは63cmまで減少させるという意味 (先生でいう while p < 2*p0 の部分) printf("%d ヶ月後 \t %d [cm]\n",month += 1, waist -= 3) → %d ヶ月後に \t % cm になっている、 1ヶ月毎に 3% ずつ減少するという意味 (先生でいう printf ("%3d年\t%d人\n", y+=1, p) の部分) 4. プログラムを実行した結果画面 pan{c109024}% ./population.rb [~/Ruby] 1 97 [cm] 2 94 [cm] 3 91 [cm] 4 88 [cm] 5 85 [cm] 6 82 [cm] 7 79 [cm] 8 76 [cm] 9 73 [cm] 10 70 [cm] 11 67 [cm] 12 64 [cm] 13 61 [cm] 5. 感想 : : 何回も計算しなければならないようなものでも、 これなら1回作ってしまえば計算ミスもなく、簡単に計算できて 便利だなと感じました。 すでに授業についていけていない自分ですが これからも頑張ります。