我一直在试图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),所以请告诉我们你已经尝试了什么,然后我们可以提供帮助。 –