偶数を足して奇数を引くというアイディアがとてもよかったです。 ---- 学籍番号:C106XXXX 氏名:XXXXXXXXX 語学クラス:中国語XX 系: 経営系 1. A. def getup(morning) for 0..rise.length # 朝になる end def tooth(brusing) # 歯みがきをする end print("目覚しが鳴りました\n") i = 0 while true getup(rise) # 朝になるmethodを呼び出す # 目が覚める部分 tooth(i) i += 1 end print("%d 日、歯を磨きました。\n") 2. A. a. コマンドラインに入力された文字を、print 文で表示させるプログラムにしまし た。また、コマンドライン入力が失敗された時のエラー文を表示させるようにし ました。(onephrase.rb) b. #!/usr/koeki/bin/ruby if ARGV[0] == nil STDERR.print("***コマンドライン入力に失敗しました***\n") exit(1) end printf("%s%s%s%s\n",ARGV[0],ARGV[1],ARGV[2],ARGV[3]) c. もとにしたプログラムは「airline.rb」です。変更点は、エラーの表示と変数で す。 d. irsv{c106186}% ./onephrase.rb る び お 君 [~/Ruby] るびお君 irsv{c106186}% ./onephrase.rb る び お く ん [~/Ruby] るびおく irsv{c106186}% ./onephrase.rb [~/Ruby] ***コマンドライン入力に失敗しました*** e. エラーがしっかりと表示されました。 ARGV配列を4つにしたので、4文字以上は表示されませんでした。配列をいくつで も表示できるようにすることは出来るのですか? f. 西村先生のHP 「予約プログラム」http://roy/~madoka/2007/r2/06/06-03-airline.html 「操作間違いをユーザに知らせたい場合」 http://roy/~madoka/2007/r2/06/06-04-stderr_commandline.html B. a. 5日間、お手伝いさんのアルバイトをして、給料と階級を表示させるプログラム にしました。def文で質問文をつくり、sumを使って入力した数値の合計を出して から、最後にif文でそれぞれ階級を表示させるようにしました。(helper.rb) b. #!/usr/koeki/bin/ruby def question print("雇主: 「今日は何をしますか??」\n") STDERR.print("1.\t掃除をする?\n") STDERR.print("2.\t洗たくをする?\n") STDERR.print("3.\t晩ご飯を作る?\n") end print("あなたは5日間、お手伝いさんのアルバイトをします。\n") print("技術ポイントによって給料や階級が変わってきます。\n") print("\n=====雇い先でのこと…=====\n") STDERR.printf("雇主: 「あなたの名前は何ですか??」\n") helper = gets.chomp if helper == "" then helper = "ルビ夫" end printf("%s: 「%sです。」\n",helper,helper) day = 0 sum = 0 while day < 5 day += 1 printf("\n***%d日目***\n",day) question answer = gets.chomp!.to_i sum += answer.to_i end printf("\n雇主: 「お疲れ樣でした。」\n") printf("\n%sさんの技術ポイントは%dポイントです。\n",helper,sum) if sum > 12 printf("%sさんはハイパーお手伝いさんの階級を与えられます。\n",helper) elsif sum <= 8 printf("%sさんは普通だったので、階級は与えられません。\n",helper) else printf("%sさんはスーパーお手伝いさんの階級を与えられます。\n",helper) end printf("\n%d円の給料をもらいました。\n",sum * 1000) c. もとにしたプログラムは「rubiocci.rb」です。 変更したところは、計算をsumにしたところとprint文、変数です。 d. irsv{c106186}% ./helper.rb [~/Ruby] あなたは5日間、お手伝いさんのアルバイトをします。 技術ポイントによって給料や階級が変わってきます。 =====雇い先でのこと…===== 雇主: 「あなたの名前は何ですか??」 ルビ夫: 「ルビ夫です。」 ***1日目*** 雇主: 「今日は何をしますか??」 1. 掃除をする? 2. 洗たくをする? 3. 晩ご飯を作る? 1 ***2日目*** 雇主: 「今日は何をしますか??」 1. 掃除をする? 2. 洗たくをする? 3. 晩ご飯を作る? 1 ***3日目*** 雇主: 「今日は何をしますか??」 1. 掃除をする? 2. 洗たくをする? 3. 晩ご飯を作る? 1 ***4日目*** 雇主: 「今日は何をしますか??」 1. 掃除をする? 2. 洗たくをする? 3. 晩ご飯を作る? 1 ***5日目*** 雇主: 「今日は何をしますか??」 1. 掃除をする? 2. 洗たくをする? 3. 晩ご飯を作る? 1 雇主: 「お疲れ樣でした。」 ルビ夫さんの技術ポイントは5ポイントです。 ルビ夫さんは普通だったので、階級は与えられません。 5000円の給料をもらいました。 e. 思っていたような結果がでました。 f. 西村先生のHP「るびおっち」 http://roy/~madoka/2007/r2/07/07-11-rubiocci.html C. a. 1からコマンドラインで入力した数値までの、奇数の合計から偶数の合計を引い た値を print 文で表示させるプログラムにしました。また、コマンドライン入 力に失敗した場合のエラーを表示させるようにしました。(intsum.rb) b. #!/usr/koeki/bin/ruby if ARGV[0] == nil STDERR.print("***コマンドライン入力に失敗しました***\n") exit(1) end sum = 0 number = ARGV[0].to_i 1.step(number, 2) do |odd| sum += odd end 2.step(number, 2) do |even| sum -= even end printf("合計は %d になります。\n", sum) c. もとにしたプログラムは「additionodd.rb」です。 変更した点は、エラー文を表示させるようにしたところと、奇数の合計に加えて 偶数の合計(マイナスの計算)を計算させ、その合計を表示させるようにしたとこ ろです。 d. irsv{c106186}% ./intsum.rb 15 [~/Ruby] 合計は 8 になります。 irsv{c106186}% ./intsum.rb 24 [~/Ruby] 合計は -12 になります。 irsv{c106186}% ./intsum.rb [~/Ruby] ***コマンドライン入力に失敗しました*** e. irsv{c106186}% bc -l [~/Ruby] 1-2+3-4+5-6+7-8+9-10+11-12+13-14+15 8 1-2+3-4+5-6+7-8+9-10+11-12+13-14+15-16+17-18+19-20+21-22+23-24 -12 計算はあっていました。エラー文もしっかりと表示されました。 f. 西村先生のHP「続・ガウスくんとルビ緒」 http://roy/~madoka/2007/r2/07/07-06-step.html 3. 2-Bの問題が、自分で考えて作らなければならなかったので難しかったです。今 回の解答は自分でも納得していないので、もう少し凝ったものを作って、再提出 したいと思います。2-Cの問題は、最初悩んでいたのですが偶数は偶数で足して、 奇数は奇数で足して、偶数の合計から奇数の合計を引けば答えが出ると、気づい て式を作ることができました。他にもやり方はあると思うので、探してみたいと 思います。