二桁以上の整数を入力すると、十の位と一の位の数字の足し算、十の位と一の位の数字の掛け算をそれぞれ行い、最後に2つの結果を足し合わせて出力するプログラムをRubyで作成する。
という問題で私の最初の回答がこちら。
puts "二桁の整数を入力してください"
sum = gets.to_i
if sum >= 10
num1 = sum / 10 % 10
num2 = sum % 10
total = (num1 + num2) + (num1 * num2)
puts total
end
実行して数値を入力すると確かに要件通り動くように思われますが...
記述のスマートさがありません。
よって下記のようにするといいみたいです。
def addition(a, b)
a + b
end
def multiplication(a,b)
a * b
end
def slice_num(num)
tens_place = (num / 10) % 10
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}です"
ポイントは下記2点
1.整数同士(integer型)の計算だと返り値は整数
2.変数の定義をカンマ区切りにすることで、複数の変数を一度に定義している
感想
Rubyの基礎的なアルゴリズム問題ですが、メソッドへの意識がまだ低いため最初のような回答になったんだと思います。
「考え工夫する」ということ常に意識していきたいです。