我一直在試圖calculte正被具有22 + 3 * 9/8輸入分配變量「計算」。我想了很多,但我所有的努力都白費請讓我知道我可以解決這一問題,以便獲得嘗試計算字符串
char calculate[10];
calculate = "22+3*9/8";
cout<< calculate;
我一直在試圖calculte正被具有22 + 3 * 9/8輸入分配變量「計算」。我想了很多,但我所有的努力都白費請讓我知道我可以解決這一問題,以便獲得嘗試計算字符串
char calculate[10];
calculate = "22+3*9/8";
cout<< calculate;
你需要轉換你的綴聲明與postfix那麼它是更容易評估輸出結果的表達式使用堆棧。看到e.g.(有很多方法可以做到這一點),你轉換你的表達後,後綴
22 + 3 * 9/8
- > 22 3 9 * 8/+
可以使用堆棧計算表達式
當一個號碼,然後按堆棧上,當操作者,取上堆疊兩個最上面的操作數,並計算然後推導致堆棧:
expr stack (top ... bottom)
22 22
3 3 22
9 9 3 22
* 27 22
8 8 27 22
/ 3 22 // here u could start using floating numbers instead 3.375 instead of 3
+ 25
後綴?這是一箇舊的惠普計算器嗎?開玩笑。 Postfix很棒。 – ulu5
您可以在C#中使用新的Roslyn API,然後從C++ API調用它。
那麼你可以使用下面的例子:
using Roslyn.Compilers;
using Roslyn.Scripting;
using Roslyn.Scripting.CSharp;
public int Eval(string expr) {
var engine = new ScriptEngine();
return (int)engine.Execute(expr);
}
警告,雖然,你應該檢查表達式不包含非法字符或其他之類的話,因爲這可能會是一個安全漏洞。
C++沒有標準的「eval」機制;您需要找到一個庫來完成它,或者自己編寫一個表達式解析器和評估器。 [字符串轉換爲數學評測]的 – geekosaur
可能重複(http://stackoverflow.com/questions/9439295/convert-string-to-mathematical-evaluation) –
您已經發布並不能幫助我們的代碼來了解你'遇到麻煩了。我們可以看到你正在分配'calculate',但沒有試圖告訴我們你是如何評估表達式的。 [堆棧溢出不是你的個人研究助理](http://meta.stackexchange.com/a/128553/142865),所以請告訴我們你已經嘗試了什麼,然後我們可以提供幫助。 –