Ruby問題2
こんちはRubyの問題で悩んだので書きます
ドリルの問題で
対話型のインターフェイスで二桁の整数を入力すると、十の位と一の位の数字に対して、足す、掛けるを行い、最後にそれぞれの結果を足し合わせて出力するプログラムをrubyで作成してください。
っていう問題が出たのですが、
自分は変換するメソッドがあるんだなと思い、
p "二桁の整数を入力してください" num = gets.chars.map(&:to_i) p num p "-------------" p num.inject(:+) p num.inject(:*)
出力結果
"二桁の整数を入力してください" 35 [3, 5, 0] "-------------" 8 0
charsメソッド、、1文字ずつ分割してくれる
オブジェクト . map(& : メソッド名)、、指定したメソッドが繰り返し実行される
オブジェクト . inject(:+)、、全ての要素を足す
出力結果から見てもわかるように
足し算はできてるけど、掛け算が0も入ってしまっているので結果が0になってしまっています
でも
p "二桁の整数を入力してください" num = "35".chars.map(&:to_i) p num
の結果が
"二桁の整数を入力してください" [3, 5]
になるということは整数で受け取ってなんとかして文字列に置き換えられればいけるのでは、、
と思ったのですが、時間ぎれで結局わかりませんでした
誰かわかる人いたら教えてください笑
因みにメソッドの参考ページです
simanman.hatenablog.com
これが模範解答
def mul(a, b) a * b end def sum(a, b) a + b end def slice(num) tens = (num / 10) % 10 ones = (num / 1) %10 return tens, ones end p "二桁の整数を入力してください" num = gets.to_i A, B = slice(num) sum_result = sum(A, B) mul_result = mul(A, B) p "足し算と掛け算結果の合計値は#{sum_result + mul_result}です"
因みに初めてはてなブログでコードを埋め込んでみました
参考までに
hatenadiary.g.hatena.ne.jp
(45分)