氏名: 510 学籍番号: c1131751 クラス: C ・ 作成したプログラム #!/usr/koeki/bin/ruby # -*- coding: utf-8 -*- def insyu(taijuu, yokuasa, arukooru) hutsukayoi = (taijuu*15*yokuasa)/(arukooru*0.8) hutsukayoi.to_i end if ARGV[0] == nil STDERR.puts "あなたが二日酔いしないための限界量を計算します." STDERR.puts "起動時に体重、翌朝までの時間、アルコール度数の値を読み込みます." STDERR.puts "例: ./hutsukayoi.rb 50 5 5 ---50kg,5時間,アルコール5パーセント" exit(1) end x = ARGV[0].to_i printf("あなたの体重は%d(kg)\n",x) y = ARGV[1].to_i printf("翌朝までの時間は%d時間\n",y) z = ARGV[2].to_i printf("飲むお酒のアルコール度数は%dパーセント\n",z) w = insyu(x, y, z).to_i printf("あなたは%d(ml)まで飲んで大丈夫ですよ!\n", w) q = w*z printf("ちなみにあなたは") 1.upto(20) do |i| genkaiti = q/i printf("アルコール度数が%dパーセントなら%d(ml)まで大丈夫です\n",i ,genkaiti) end ・ プログラムの説明 今回作成したプログラムは体重(kg)、翌朝までの時間(h)、 飲むお酒のアルコール度数(%)から 二日酔いせずに飲めるお酒の限界量を計算するプログラムである。 また、1%から20%までのお酒に変えた場合でも 限界量がわかるように計算するプログラムも含んでいる。 前回のプログラムから数値の読み込みを gets.chompからコマンドライン引数に変更した。 具体的には、def部分の計算に必要なtaijuu、yokuasa、arukooruのデータが 「x = ARGV[0].to_i」、「y = ARGV[1].to_i」、「z = ARGV[2].to_i」と入力し 自動的に配列変数ARGVに代入されるようにした。 次に入力されたその人の体重、翌朝までの時間を使い アルコール度数が1%から20%まで変更して飲める限界量を 計算する機能を前回のプログラムからつけ足した。 入力されたデータの体重、翌朝までの時間は変更しないで計算するため 「q = w*z」の部分で飲める限界量にアルコール度数をかけたものを 変数「q」として用意し、 1.upto(20) do |i| genkaiti = q/i の部分でアルコール度数1から20までをuptoを使い順番にかけていき printf("アルコール度数が%dパーセントなら%d(ml)まで大丈夫です\n",i ,genkaiti) の部分で結果を表示させている。 ・ 実行結果(2つ以上のパターンで実験) (コマンドライン引数がなかった場合)---------- sime{c113175}% ./hutsukayoi2.rb [~/Ruby] あなたが二日酔いしないための限界量を計算します. 起動時に体重、翌朝までの時間、アルコール度数の値を読み込みます. 例: ./hutsukayoi.rb 50 5 5 ---50kg,5時間,アルコール5パーセント (体重50kg、翌朝まで5時間、アルコール度数5%の場合)---------- sime{c113175}% ./hutsukayoi2.rb 50 5 5 [~/Ruby] あなたの体重は50(kg) 翌朝までの時間は5時間 飲むお酒のアルコール度数は5パーセント あなたは937(ml)まで飲んで大丈夫ですよ! ちなみにあなたはアルコール度数が1パーセントなら4685(ml)まで大丈夫です アルコール度数が2パーセントなら2342(ml)まで大丈夫です アルコール度数が3パーセントなら1561(ml)まで大丈夫です アルコール度数が4パーセントなら1171(ml)まで大丈夫です アルコール度数が5パーセントなら937(ml)まで大丈夫です アルコール度数が6パーセントなら780(ml)まで大丈夫です アルコール度数が7パーセントなら669(ml)まで大丈夫です アルコール度数が8パーセントなら585(ml)まで大丈夫です アルコール度数が9パーセントなら520(ml)まで大丈夫です アルコール度数が10パーセントなら468(ml)まで大丈夫です アルコール度数が11パーセントなら425(ml)まで大丈夫です アルコール度数が12パーセントなら390(ml)まで大丈夫です アルコール度数が13パーセントなら360(ml)まで大丈夫です アルコール度数が14パーセントなら334(ml)まで大丈夫です アルコール度数が15パーセントなら312(ml)まで大丈夫です アルコール度数が16パーセントなら292(ml)まで大丈夫です アルコール度数が17パーセントなら275(ml)まで大丈夫です アルコール度数が18パーセントなら260(ml)まで大丈夫です アルコール度数が19パーセントなら246(ml)まで大丈夫です アルコール度数が20パーセントなら234(ml)まで大丈夫です (体重60kg、翌朝まで6時間、アルコール度数10%の場合)---------- sime{c113175}% ./hutsukayoi2.rb 60 6 10 [~/Ruby] あなたの体重は60(kg) 翌朝までの時間は6時間 飲むお酒のアルコール度数は10パーセント あなたは675(ml)まで飲んで大丈夫ですよ! ちなみにあなたはアルコール度数が1パーセントなら6750(ml)まで大丈夫です アルコール度数が2パーセントなら3375(ml)まで大丈夫です アルコール度数が3パーセントなら2250(ml)まで大丈夫です アルコール度数が4パーセントなら1687(ml)まで大丈夫です アルコール度数が5パーセントなら1350(ml)まで大丈夫です アルコール度数が6パーセントなら1125(ml)まで大丈夫です アルコール度数が7パーセントなら964(ml)まで大丈夫です アルコール度数が8パーセントなら843(ml)まで大丈夫です アルコール度数が9パーセントなら750(ml)まで大丈夫です アルコール度数が10パーセントなら675(ml)まで大丈夫です アルコール度数が11パーセントなら613(ml)まで大丈夫です アルコール度数が12パーセントなら562(ml)まで大丈夫です アルコール度数が13パーセントなら519(ml)まで大丈夫です アルコール度数が14パーセントなら482(ml)まで大丈夫です アルコール度数が15パーセントなら450(ml)まで大丈夫です アルコール度数が16パーセントなら421(ml)まで大丈夫です アルコール度数が17パーセントなら397(ml)まで大丈夫です アルコール度数が18パーセントなら375(ml)まで大丈夫です アルコール度数が19パーセントなら355(ml)まで大丈夫です アルコール度数が20パーセントなら337(ml)まで大丈夫です ・ 参考文献 大鵬薬品工業株式会社. "二日酔い対策本部24時|ソルマック|大鵬薬品工業株式会社". http://www.taiho.co.jp/kenko/futsukayoi/houkoku/index03.html, (2015-10-09参照) ・ 感想 コマンドライン引数を今回の講義を通して理解することができた。 今回の課題ではprintfの中にパーセントを%ととして入力してしまったため エラーが発生し完成までに時間がかかってしまったので 次回からはミスがないようにしたい。 また、ミスがあったとしても早く気づけるようにしたい。