自己紹介:現在は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と変数を置いていく必要があります。