2016-09-15 21 views
-3

我需要編寫和在C++中,計算表達式的值執行的程序:如何在C++中轉換這種代數表達式?

5X^2 + 12Y/3×,其中x = 12,且y = 9.8

這是我有什麼:

int num1 = 12; float num2 = 9.8; float totalResult; 
totalResult = 5 * num1 * num2 + 12 * num2/3 * num1; 

cout << totalResult; 

答案是23.2667,但我得到一個錯誤的結果。

+2

對於一個高效的算法,用手工計算它,並讓它只返回答案。 – 4castle

+0

@RamandeepPunia我在代碼中包含了我的代碼。你可以看看嗎? – GreyHatBlaze

+0

@ 4castle我會試一試,謝謝。我在代碼中包含了我的代碼如果你想看看它。 – GreyHatBlaze

回答

4

你的問題是操作順序(和num1 * num2錯字)。

您提出的正確答案是23.2667,這隻有在您將/解釋爲最後一次操作時纔有可能。要強制師最後發生,把左右兩邊的括號:

totalResult = (5 * num1 * num1 + 12 * num2)/(3 * num1); 

它順序執行這樣的話:

    1  2  4 3  6 5 
totalResult = (5 * num1 * num1 + 12 * num2)/(3 * num1); 

否則,在這個順序被執行:

   1  2  6 3  4 5 
totalResult = 5 * num1 * num1 + 12 * num2/3 * num1; 

下面是用JavaScript證明:

var num1 = 12; var num2 = 9.8; 
 
var totalResult = (5 * num1 * num1 + 12 * num2)/(3 * num1); 
 
console.log(totalResult);

Operator Precedence Reference

+0

它應該是'5 * num1 * num1'not'num2' –

+0

@RamandeepPunia謝謝,我看到,當我測試JavaScript版本 – 4castle

+0

我感謝您的反饋!我知道這是一個與運營商優先級或類似的性質有關的問題。感謝您提供運營商優先權參考鏈接。我會花一些時間閱讀它。再次,我想感謝您抽出一些時間來回答我的問題。保重! – GreyHatBlaze

相關問題