hibikousinnkibouのブログ

駆け出しプログラマーによる足跡ブログ

getsメソッドを利用した2桁の数字を足し合わせたり、掛け合わせたりする計算

本日、朝の問題。

二桁の整数を入力し、一の位と十の位を足し合わせたものと掛け合わせたものを足した整数を求めなさい。

ヒント:一の位は二桁の整数を10で割った余り。

    十の位は二桁の整数を10で割った整数に対して、また10で割った余り。

 

この問題から

入力で必要な gets.to_i メソッドと、10の位と1の位を別々で求めることが必要だと感じた。

そこまで分かれば手探りで何とか正解まで辿り着けたが、振り返りたいのが

input = gets.to_i

とすること。何を変数にするか迷ったが、入力する時は input が分かりやすいと感じた。

あと、整数同士の計算なので返り値は整数になるので不要だったのだが、

(num/10).floor

の .floor (切り捨て)を入力した。

他には、 .ceil (切り上げ)  .round (四捨五入)がある。

 

自分の回答は

def num_count(num)
ones = num % 10
tens = (num/10).floor % 10
puts "足し算と掛け算結果の合計値は#{(ones + tens) + (ones * tens)}です"
end

puts "二桁の整数を入力してください"
input = gets.to_i

puts num_count(input)

とした。

模範回答よりも分かりやすいのでは?

模範回答

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}です"

ones と tens は名前の付け方としては他の人が分からないので良くないとは思いますが。