0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby】10の位と1の位を取得する方法

Last updated at Posted at 2021-01-01

概要

二桁の整数から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の位から順番に数値を取得することができる

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?