gpt4 book ai didi

c++ - RPN 计算器无法正确执行计算

转载 作者:行者123 更新时间:2023-11-27 23:17:51 26 4
gpt4 key购买 nike

我有一个程序应该将表达式转换为反向波兰表示法,然后在执行计算后显示答案。现在它不能正确执行计算。例如,如果我输入 5+2+5,它出于某种原因只注册了 5+2。谁能告诉我我做错了什么?

#include <iostream>
#include <stack>


void calculation(int, int, char);
using namespace std;
stack<int> a;

void main(void)
{

bool expression = false;
char ch;
char done;

int op1, op2;

cout << "Reverse Polish Notation : " << endl;
cout << "Enter expression: " << endl;
while (!expression)
{
cin >> op1;
cin >> op2;
cin >> ch;

calculation(op1, op2, ch);
if (!cin)
expression = false;
else
{
expression = true;
calculation(op1, op2, ch);
}
}
cout << "Your expression is " << a.top() << endl;

}

void calculation(int oper1, int oper2, char chr)
{
switch (chr)
{
case '+':
a.push(oper1 + oper2);
break;
case '-':
a.push(oper1 - oper2);
break;
case '*':
a.push(oper1 * oper2);
break;
case '/':
a.push(oper1 / oper2);
break;

}
}

最佳答案

您的程序不转换任何东西。这是一个非常简单的 RPN 计算器,它采用由两个操作数和一个二进制运算组成的单个项并计算结果。

如果需要它接受更复杂的RPN输入,则需要重新设计输入和计算逻辑。

如果您想输入像 5+4 这样的中缀表达式,但将内部表示保留为 RPN 堆栈,您还必须编写一个解析器来执行此操作。

关于c++ - RPN 计算器无法正确执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15316790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com