LoginSignup
6
10

More than 3 years have passed since last update.

2桁から十の位と一の位を取得する

Last updated at Posted at 2020-03-01

自己紹介:現在はscalaとAngularを書いています。

数字の正規表現

def slice_num(input)
  ten = (input/10) % 10
  one = (input/1) % 10
  return ten, one
end

puts "2桁の整数を入力してください"
input = gets.to_i
ten, one = slice_num(input)
puts "足し算結果と掛算結果の合計値は#{(ten+one)+(ten*one)}です"

ユーザーが整数2桁を入力するとその数字を
(十の位+一の位)+(十の位*一の位)を計算し
その計算結果を出力します。

to_iメソッドで入力した内容を数字型にします
slice_numの返り値をten, oneに入れます
ten = (input/10) % 10の記述にて2桁の整数を10で割り、その値を10で割った際の余をだすことで十の位を取り出すことができる
one = (input/1) % 10の記述にて2桁の整数を1で割り、その値を10で割った際の余をだすことで一の位を取り出すことだできる
その返り値をreturnで戻すことで計算に用いることができる

追記

コメント欄にてご教授いただいた内容も記載します。

divmodメソッド

def slice_num(input)
  ten, one = (input % 100).divmod(10)
  return ten, one
end

puts "2桁の整数を入力してください"
input = gets.to_i
ten, one = slice_num(input)
puts "足し算結果と掛算結果の合計値は#{(ten+one)+(ten*one)}です"

x.divmod(y)
divmodメソッドを使用するとxをyで割った商と余を取得することができます。
この場合xがtenにyがoneに代入されていますね。

digitメソッド

def slice_num(input)
  one, ten = input.digits.take(2)
  return ten, one
end

puts "2桁の整数を入力してください"
input = gets.to_i
ten, one = slice_num(input)
puts "足し算結果と掛算結果の合計値は#{(one+ten)+(one*ten)}です"

input.digits.take(2)にて引数で渡されたinputに対しdigitsを使用しtakeで取得します。
take(2)では一の位、十の位までを取得します。
take(4)にした場合には、一、十、百、千までを取得します。
返り値は一、十の順番で代入されるため、今までと異なり、one、tenと変数を置いていく必要があります。

6
10
2

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
6
10