本日はこの問題についてです。
二桁の整数を入力すると、十の位と一の位の数字の足し算、十の位と一の位の数字の掛け算をそれぞれ行い、
最後に2つの結果を足し合わせて出力するプログラムをRubyで作成してください。
なお、2桁の数字以外が入力として与えられた場合を考慮する必要はありません。
例)
> 二桁の整数を入力してください
> 15
# 1 + 5 と 1 × 5 をそれぞれ計算
> 足し算結果と掛け算結果の合計値は11です
以下模範回答
ruby
def addition(a, b)
a + b
end
def multiplication(a,b)
a * b
end
def slice_num(num)
# 10の位
tens_place = (num / 10) % 10
# 1の位
ones_place = num % 10
return tens_place, ones_place
end
puts "二桁の整数を入力してください"
input = gets.to_i
X, Y = slice_num(input)
add_result = addition(X, Y)
multiple_result = multiplication(X, Y)
puts "足し算結果と掛け算結果の合計値は#{add_result + multiple_result}です"
解説
ある整数について、
整数を10で割った計算結果の余りが1の位、
整数を10で割ったものを更に10で割った計算結果の余りが10の位であるという法則を利用して、
slice_numメソッドでは10の位と1の位を取得しています。
例えば「15」の場合
15/10=1.5の小数点以下の「5」が一の位、
15/10=1.5/10=0.15の小数点以下の「1」が十の位として扱うことができます。
また、変数を定義する際に、カンマで区切ることによって、同時に複数の変数を定義することができます。
今回は、X, Y に10の位、1の位を同時に代入しています。
また、全ての処理を1つのメソッド内で行っても構いません。