尝试计算字符串
trying to calculate a string
我一直在尝试计算分配的变量"计算",该变量的输入为 22+3*9/8 .我尝试了很多,但我所有的努力都是徒劳的,请让我知道如何解决这个问题以获得输出结果
char calculate[10];
calculate = "22+3*9/8";
cout<< calculate;
您需要
将中缀语句转换为后缀,那么使用堆栈评估表达式要容易得多。 例如,请参阅(有很多方法可以做到这一点)
将表达式转换为后缀后
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
您可以在 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++)
- 计算在同一位置至少包含一个常用字符的不同字符串对
- 给定一个单词数组和一个字符串,如何计算给定字符串中的所有单词
- 使用标准库计算字符串中的十进制数
- 如何计算字符串中用户输入元素的出现次数?
- 如何在 C++ 中计算字符串的算术运算
- 计算字符串中子字符串的出现次数
- 用于计算字符串中元音的函数
- 当 NUL 字符被定义为字符串的一部分时,为什么 strlen() 不计算终止 NUL 字符的字节?
- 计算表达式字符串由 std::map 中的键组成
- 如何计算字符串 c++ 中的"xxx"数?
- 通过将文本文件读取为字符串/向量来计算加权/未加权 GPA
- 如何更有效地计算n个字符串之间的不匹配分数?
- 将字符串计算为 C++ 中的表达式
- 在C++中从字符串计算算术表达式
- 在字符串计算后添加空字符
- C++使用C字符串计算文件中的字符、单词、句子
- 不使用字符串计算数字中的数字