概要
二桁の整数から10の位と1の位を取得して、計算結果を出力するまでを書いていきます。
目次
-
実践
- 問題
- 解答(解説)
- 別解(digitsメソッド)
- 別解(divmodメソッド)
-
まとめ
-
参考文献
実践
問題
二桁の整数から10の位と1の位の数字の足し算と掛け算の結果を足し合わせて出力するプログラムを書いてください
解答(解説)
解答
def addition(a, b)
a + b
end
# 10の位と1の位の掛け算
def multiplication(a, b)
a * b
end
def check_num(num)
tens_place = (num / 10) % 10 # 10の位を10で割ることで1桁にしてから余りを計算している
ones_place = num % 10 # 10で割ったときの余りが1の位になる
addition_result = addition(tens_place, ones_place) # additionメソッドで足し算
multiplication_result = multiplication(tens_place, ones_place) # multiplicationメソッドで掛け算
p "足し算の結果と掛け算の結果の合計は#{ addition_result + multiplication_result }です。"
end
# ターミナルで入力する
p '二桁の整数を入力してください'
num = gets.to_i
# メソッド呼び出し
check_num(num)
別解(digitsメソッド)
書き換えた箇所は10の位と1の位を計算しているところです。 digits.take
の引数に 2
を指定しているのは1の位と10の位の2つの値を取得しているからです。注意点としては digits.take
で取得する際 1の位
から順番に取得する点です。
digits
def addition(a, b)
a + b
end
def multiplication(a, b)
a * b
end
def check_num(num)
ones_place, tens_place = num.digits.take(2) # 1の位と10の位を取得
addition_result = addition(tens_place, ones_place)
multiplication_result = multiplication(tens_place, ones_place)
p "足し算の結果と掛け算の結果の合計は#{ addition_result + multiplication_result }です。"
end
p '二桁の整数を入力してください'
num = gets.to_i
check_num(num)
別解(divmodメソッド)
書き換えた箇所は10の位と1の位を計算しているところです。 divmod
の引数(今回の場合は10
)に数値を指定することで割ったときの商と余り取得することができます。
divmod
def addition(a, b)
a + b
end
def multiplication(a, b)
a * b
end
def check_num(num)
tens_place, ones_place = num.divmod(10) # 1の位と10の位を取得
addition_result = addition(tens_place, ones_place)
multiplication_result = multiplication(tens_place, ones_place)
p "足し算の結果と掛け算の結果の合計は#{ addition_result + multiplication_result }です。"
end
p '二桁の整数を入力してください'
num = gets.to_i
check_num(num)
まとめ
- 10の位は二桁の整数を10で割り、さらに10で割った余り
- 1の位は二桁の整数を10で割った余り
- digitsメソッドを使用することで1の位から順番に数値を取得することができる