2012-03-21 3 views
1

は、だから私は、モジュールを使用して、Rubyでモジュロ除算を行うためのプログラムを作った:ルビーモデューロ課

module Moddiv 
    def Moddiv.testfor(op1, op2) 
     return op1 % op2 
    end 
end 

プログラム:

require 'mdivmod' 
print("Enter the first number: ") 
gets 
chomp 
firstnum = $_ 
print("Enter the second number: ") 
gets 
chomp 
puts 
secondnum = $_ 
puts "The remainder of 70/6 is " + Moddiv.testfor(firstnum,secondnum).to_s 

私は2つの数字でそれを実行すると、70と6言います、私は出力として70を得る!なぜこうなった?

+0

sscce.org。また、これはRailsに関する質問ですか?私にルビーのように見えます。 –

+0

ええ、ちょうどルビー、私は気を散らして、代わりにレールをタイプしました、申し訳ありません、編集しました – Billjk

+1

あなたのコードを簡素化し、ここにすべてを投稿してください。 1行に簡略化することができます。 –

答えて

10

firstnumsecondnum文字列"70""6"ているからです。 String#%が定義されています - これはフォーマットされた出力演算子です。

"70"はフォーマット文字列ではないため、リテラルとして扱われます。 "70" % "6"は、テンプレート"70"に従ってフォーマットされた "6"を出力します。これはちょうど"70"です。

あなたは、文字列ではなく整数としてユーザー入力をつかんだfirstnum = $_.to_iなど

0

であなたの入力を変換する必要があります。

"70" % "6" 
# => "70" 

70 % 6 
# => 4 

パラメータに.to_iを使用してください。

2

モジュロはIRBで、例えば文字列とのトラブルを持っているようだ:

"70" % "6" => "70" 

あなたのreturn文を作ってみる:

return op1.to_i % op2.to_i 
+0

@Chowlettはより良い説明をしています(そして21秒で私を打ち負かしてください!) –