rubyのプログラムについてです。
・SET i a : 変数 i に値 a を代入する (i = 1, 2)
・ADD a :「変数 1 の値 + a」を計算し、計算結果を変数 2 に代入する
・SUB a :「変数 1 の値 - a」を計算し、計算結果を変数 2 に代入する
1 行目には命令の個数 n が与えられます。
続く n 行には、n 個の命令が実行される順番どおりに与えられます。
n
s_1
s_2
・
・
s_i は次の 3 種類の文字列のうちのいずれかです。
・SET i a
・ADD a
・SUB a
(i = 1, 2; a は整数)
それぞれの値は文字列で標準入力から渡されます。このようなプログラムを考えていたのですが、どうしてもうまくいかず、どこが間違っているのかアドバイスをいただきたいと思い質問させていただきます。
コード
input_lines = gets.to_i
i = Array.new(2, 0)
def setf(a,b)
i[a - 1] = b
end
def addf(a)
i[1] = i[0] + a
end
def subf(a)
i[1] = i[0] - a
end
input_lines.times do |n|
command = gets.chomp.split(' ')
if command[0] == 'SET'
setf(command[1].to_i, command[2].to_i)
elsif command[0] == 'ADD'
addf(command[1].to_i)
else
subf(command[1].to_i)
end
end
puts i.join(' ')
エラー
Main.rb:9:in setf': undefined local variable or method
i' for main:Object (NameError)
from Main.rb:23:in block in <main>' from Main.rb:20:in
times'
from Main.rb:20:in `<main>'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。