氏名:		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の中にパーセントを%ととして入力してしまったため
エラーが発生し完成までに時間がかかってしまったので
次回からはミスがないようにしたい。
また、ミスがあったとしても早く気づけるようにしたい。