我需要編寫和在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,但我得到一個錯誤的結果。
我需要編寫和在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,但我得到一個錯誤的結果。
你的問題是操作順序(和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);
它應該是'5 * num1 * num1'not'num2' –
@RamandeepPunia謝謝,我看到,當我測試JavaScript版本 – 4castle
我感謝您的反饋!我知道這是一個與運營商優先級或類似的性質有關的問題。感謝您提供運營商優先權參考鏈接。我會花一些時間閱讀它。再次,我想感謝您抽出一些時間來回答我的問題。保重! – GreyHatBlaze
對於一個高效的算法,用手工計算它,並讓它只返回答案。 – 4castle
@RamandeepPunia我在代碼中包含了我的代碼。你可以看看嗎? – GreyHatBlaze
@ 4castle我會試一試,謝謝。我在代碼中包含了我的代碼如果你想看看它。 – GreyHatBlaze