僕のコード
Ruby
1class ShiftValue 2 3 #2のn乗を返却 4 no = 0 5 def pow2(no) 6 pw = 1 7 8 while no > 0 9 pw *= 2 10 end 11 return pw 12 end 13 14 puts "整数xをnビットシフトします" 15 print "x : " 16 x = gets.to_i 17 print "n : " 18 n = gets.to_i 19 20 m_power = x * pow2(n) 21 d_power = x / pow2(n) 22 23 l_shift = x << n 24 r_shift = x >> n 25 26 printf("[a] x × (2の%d乗) = %d\n", n, m_power) 27 printf("[b] x ÷ (2の%d乗) = %d\n", n, d_power) 28 printf("[c] x << %d = %d\n", n, l_shift) 29 printf("[d] x >> %d = %d\n", n, r_shift) 30 31 puts "aとcの値は一致します" 32 puts "bとdの値は一致します" 33end
理想の出力結果
整数xをnビットシフトします x : 100(キーボードから打ち込む) n : 3 (キーボードから打ち込む) [a] x × (2の3乗) = 800 [b] x ÷ (2の3乗) = 12 [c] x << 3 = 800 [d] x >> 3 = 12 [a]と[c]の値は一致します [b]と[d]の値は一致します
という風にしたいのですが僕のコードだと
7-11.rb:20:in <class:ShiftValue>': undefined method
pow2' for ShiftValue:Class (NoMethodError)
というエラーが出ます
pow2メソッドの定義がミスってるのはわかるのですがどうしたらいいかわかりません
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/04/28 02:05