今日も学んだことを忘れないてためにメモします。
getsメソッドの種類
getsメソッドが実行されるとターミナルがコマンド入力待ちの状態に変わりユーザーがエンターキーを押すまで文字を入力できる。
送られてきた文字列オブジェクトの後には改行が入る。
gets.chompとすることで改行が入らない。
getsとgets.chompは「数字」を入力しても「文字列」の扱いにしてしまう。
gets.to_iとすることで「数字」として扱える
プログラム内容
getsメソッドを利用しての位と一の位の数字の足し算、十の位と一の位の数字の掛け算をそれぞれ行い、最後に2つの結果を足し合わせて出力するプログラムになります。
> 二桁の整数を入力してください
> 15
# 1 + 5 と 1 × 5 をそれぞれ計算
> 足し算結果と掛け算結果の合計値は11です
10の位は整数を10で割ったものを更に10で割った計算結果、
1の位は整数を10で割った計算結果の余りで求められる。
Rubyの性質上、整数同士(integer型)の計算だと返り値は整数になるので、小数点以下は切り捨てられる。
記述内容
def addition(a, b)
a + b
end
def multiplication(a,b)
a * b
end
def slice_num(num)
tens_place = (num / 10) % 10
ones_place = (num / 1) % 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}です"
slice_numメソッドでは10の位と1の位を取得して、その返り値をX,Yという変数に代入している。
変数は定義する際に、カンマで区切ることによって、同時に複数の変数を定義できる。
Xに10の位、Yに1の位を同時に代入している。
additionメソッドで10の位と1の位の数字の足し算、multiplicationメソッドで十の位と一の位の数字の掛け算をそれぞれ行いadd_resultとmultiple_resultに代入。
最後にその結果を足して合計値を出力。
補足
ある整数について、任意の桁の数字を取り出す手順は、以下の通り。
①取り出したい数字の桁数で割る
② ①の結果をさらに10で割った、そのあまりが任意の桁の数字
# 1000の位
one_thousand_place = (num / 1000) % 10
# 100の位
hundred_place = (num / 100) % 10
# 10の位
tens_place = (num / 10) % 10
# 1の位
ones_place = (num / 1) % 10
以上になります。