2016-10-02 10 views
1

私は自分のためにPoint of Intersection電卓をコーディングしようとしていました。何らかの理由で私の計算機が完全に間違ってコード化されているか、または意図された操作順序が機能していません。私は詳しく説明することができます。私のコードが操作の順序を誤って計算するのはなぜですか?

def point_of_intersection (m1, b1, m2, b2) 

    if m1 == m2 || m1 - m2 == 0 
     puts "No Solution" 
    elsif m1 == m2 || b1 == b2 
     puts "Infinite Solutions" 
    end 

    x = -1 * (b1 - b2)/(m1 - m2) 
    y = (m1 * x) + b1 

    puts "The Point Of Intersection is: (#{x}, #{y})" 

end 

あなたが見ることができるように、メソッドpoint_of_intersectionは、4つのパラメータを取る:最初の線形方程式(M1)の 傾きとy切片(B1) 及び第2の線形式(M2)の傾きをとそのy切片(b2)

この電卓は私のために正しく機能している場合がありますが、いくつかのケースでは間違った数字が出力されているようです。私は何人かの人々はかどうかの式に疑問を迅速かもしれ知っ

point_of_intersection(1, 4, 2, 6) #Gives (-2,2) which is correct 
point_of_intersection(0,5,2,0) #Gives (2,5) when it should be (2.5, 5) 
point_of_intersection(1,2,5,3) #Gives (-1, 1) when it should be (-0.25, 1.75) 

ここに私のテストのいくつかの結果がある斜面の値の差で割ったy切片で-1回の違いそうですか。テキストエディタで行ったすべてのテストで、私は同じ形式の論文を紙に使用して別の結果を得たことを保証できます。

私の最高の推測では、私はコンピュータが操作を台無しに可能性がどのように識別するのに十分な経験がないのですが、私のコンピュータは何とか

x = -1 * (b1 - b2)/(m1 - m2) 

のための操作の順序を実行していることです。

ご協力いただきありがとうございます。

+1

私は '、あなたの条件文と間違って何かがあると思います| | 'は'または 'not'と 'を意味します。 'm1 == m2'がfalseの場合、' m1 - m2 == 0'もfalseになりますが、 'm1 == m2'が真の場合、' m1 - m2 == 0'は無関係になります。合格。 OTOHの場合、elsifの最初の項は決して出現しません。なぜなら、 'm1 == m2'が真であれば、最初の枝が取られていて、その行の' b1 == b2' – philomory

答えて

0

山車にあなたの引数を変換します

def point_of_intersection (m1, b1, m2, b2) 
    m1 = m1.to_f 
    b1 = b1.to_f 
    m2 = m2.to_f 
    b2 = b2.to_f 

    if m1 == m2 || m1 - m2 == 0 
     puts "No Solution" 
    elsif m1 == m2 || b1 == b2 
     puts "Infinite Solutions" 
    end 

    x = -1 * (b1 - b2)/(m1 - m2) 
    y = (m1 * x) + b1 

    puts "The Point Of Intersection is: (#{x}, #{y})" 

end 

例:

point_of_intersection(1, 4, 2, 6) 
#The Point Of Intersection is: (-2.0, 2.0) 

point_of_intersection(0, 5, 2, 0) 
#The Point Of Intersection is: (2.5, 5.0) 

point_of_intersection(1, 2, 5, 3) 
#The Point Of Intersection is: (-0.25, 1.75) 
0

あなたは山車で作業する必要があります。

x = (-1 * (b1 - b2)/(m1 - m2)).to_f 
y = ((m1 * x) + b1).to_f 
関連する問題