2015-12-10 70 views
-1

我作出了勾股定理計算,我有一些問題:勾股定理計算腿

static void Main(string[] args) 
     { 
      double a, b, c; 
      Console.WriteLine("Which side do you need to calculate? (a, b, c)"); 
      string side = Console.ReadLine(); 

      switch (side.ToLower()) 
      { 
       case "a": 
        Console.WriteLine("Enter length of b"); 
        b = double.Parse(Console.ReadLine()); 
        Console.WriteLine("Enter length of c"); 
        c = double.Parse(Console.ReadLine()); 


        a = Math.Sqrt(Math.Pow(b, 2) - Math.Pow(c, 2)); 
        a = Math.Round(a, 4); 
        Console.WriteLine("Side a is ~ {0}", a); 

        break; 

       case "b": 
        Console.WriteLine("Enter length of a"); 
        a = double.Parse(Console.ReadLine()); 
        Console.WriteLine("Enter length of c"); 
        c = double.Parse(Console.ReadLine()); 

        b = Math.Sqrt(Math.Pow(a, 2) - Math.Pow(c, 2)); 
        //b = Math.Round(b, 4); 
        Console.WriteLine("Side b is ~ {0}", b); 
        break; 

       case "c": 
        Console.WriteLine("Enter length of a"); 
        a = double.Parse(Console.ReadLine()); 
        Console.WriteLine("Enter length of b"); 
        b = double.Parse(Console.ReadLine()); 

        c = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2)); 
        c = Math.Round(c, 4); 
        Console.WriteLine("Side a is ~ {0}", c); 
        break; 
      } 
     } 

我有斜邊工作的權利,但需要其他邊/腿一定的指導意義。

非常感謝所有幫助!

回答

0

假設直角三角形 其中c爲斜邊

a = Math.Sqrt(Math.Pow(c, 2) - Math.Pow(b, 2)); 
b = Math.Sqrt(Math.Pow(c, 2) - Math.Pow(a, 2)); 
c = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2)); 

看起來你有BC和交流,而不是

+1

觀看此視頻[kahn academy video](https://www.khanacademy.org/math/geometry/right_triangles_topic/pyth_theor/v/pythagorean-theorem)瞭解公式 –

+0

正如一個側面說明,'數學。 Pow'確實沒有必要,因爲它很容易(並且可能計算得更快),例如'a = Math.Sqrt(c * c -b * b);' –

+0

它總是會帶來一些小錯誤 謝謝! @RonBeyer公平點,我會牢記這一點。爲了個人的清晰起見,我現在堅持給鮑爾 - 這不是解決方案特別複雜。 – ryderd

0

其他職位指出,什麼是你的代碼錯誤,但我想指出你在代碼中做了很多額外的工作。試試這個模式:

Console.WriteLine("Enter Side 1"); 
double x = double.Parse(Console.ReadLine()); 
Console.WriteLine("Enter Side 2"); 
double y = double.Parse(Console.ReadLine()); 

double answer = Math.Sqrt(Math.Pow(x, 2) - Math.Pow(y, 2)); ; 
answer = Math.Round(answer, 4); 
Console.WriteLine("Side 3 is ~ {0}", answer); 

你實際上是過於複雜如何通過引入第三個變量來得到你的答案從,B,C選擇。我注意到這一點,因爲你的3個案例中的所有數學都完全相同。

+0

在所有情況下都不一樣,其中一個增加了,而不是減少。 –

+0

我明白了。所以我對「數學是一樣的」的評論其實是錯誤的。我的錯! – wentimo