rubyの演算出力について
解決済
回答 5
投稿
- 評価
- クリップ 0
- VIEW 778
質問なのですが、コマンドプロンプトで "ファイル名⁺.rb"の後に数字を入力して
その数字がrbファイル内で変数として演算で使われ最終的な結果が出力されるには
どのように行えばよろしいでしょうか?
説明が下手で申し訳ないのですが詳しく教えていただければ幸いです。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+1
数字を十進整数として扱うのであれば ARGV[0].to_i で十進整数に変換できます。
数字を浮動小数点数として扱うのであれば ARGV[0].to_f で浮動小数点数に変換できます。
ただし引数が入力されていないときには ARGV の値は nil になりますが、
そのときに ARGV[0].to_i の値は 0 になり、 ARGV[0].to_f の値は 0.0 になって
しまいます。ruby のソースコード内で引数が入力されているかどうかをチェックするように
された方がよいと思います。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
checkベストアンサー
0
# coding: utf-8
# 2 つの引数が数値の場合は 乗算、
# 2 つの引数が少なくとも1つが文字列の場合は 文末にpを追加、
# それ以外の引数の場合は errorと表示
if ARGV.count == 2
if /\A\d+\z/ =~ ARGV[0] && /\A\d+\z/ =~ ARGV[1]
puts ARGV[0].to_i * ARGV[1].to_i
else
puts "#{ARGV[0]} #{ARGV[1]} p"
end
else
puts 'error'
end
実行例
$ ruby args.rb 10 3
30
$ ruby args.rb a b
a b p
$ ruby args.rb 1
error
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
# add.rb というファイルに保存する
result = ARGV[0].to_i + ARGV[1].to_i
puts "足した結果は #{result} です。"
$ ruby add.rb 12 34
足した結果は 46 です。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
... コマンドプロンプト上の引数が数字であれば×10を また引数が文字であれば文字の後ろに”p”を加える ...
# coding: utf-8
if ARGV.size == 1
if /\A\d+\z/ =~ ARGV[0]
# 数字が指定されていた場合
puts ARGV[0].to_i * 10
else
# その他
puts "#{ARGV[0]}p"
end
end
実行例
ruby args.rb 12
120
$ ruby args.rb 12x
12xp
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
-1
# coding: utf-8
# 2つの変数で演算を行う。
def calc(a, b)
a * 100 + b
end
# コマンドラインに指定された数字を変数に保存する。
count = ARGV.size
a = (count > 0)? ARGV[0].to_i : 0
b = (count > 1)? ARGV[1].to_i : 0
# 変数を使って演算する。
result = calc(a, b)
# 演算結果を出力する。
puts result
実行例を示します。
$ ruby args.rb
0
$ ruby args.rb 1
100
$ ruby args.rb 1 2
102
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 90.36%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2015/02/22 21:14
無事引数を上手く扱うことができました。
差し支えなければまた質問させていただきたいのですが、
if文でARGVが数値文字列かによって
例えば数字の3と5の場合は+10を行い、
文字列がgとpの場合は文字の末尾にpを加えるといったことは可能でしょうか?
よろしくお願いいたします。