c++ - 试图计算一个字符串

标签 c++ visual-c++ c++-cli

我一直在尝试计算通过输入 22+3*9/8 分配的变量“计算”。我尝试了很多,但我所有的努力都是徒劳的,请告诉我如何解决这个问题以获得输出结果

char calculate[10]; 
calculate = "22+3*9/8"; 
cout<< calculate;

最佳答案

您需要将中缀语句转换为后缀,然后使用堆栈计算表达式会容易得多。见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

关于c++ - 试图计算一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10557322/

相关文章:

c++ - 如何通过文件映射对象重新映射共享内存的 View ?

c++ - 如何编写支持 LTO 的代码?

c# - 适用于 C# 应用程序的 AnyCPU/x86/x64 及其 C++/CLI 依赖项

visual-studio-2010 - 人们用什么来替换 VS 2010 中缺少的 C++/CLI Intellisense?

c++ - 调用空类的构造函数真的会占用内存吗?

c++ - main 函数 - 返回值有什么意义?

c++ - 是 !!在 C++ 中转换为 bool 的安全方法?

visual-studio-2005 - Visual Studio中的项目生成错误

c# - Visual Studio C++/CLI 模板神秘错误

c++ - Visual C++ 为什么 std::move 崩溃