식을 역 폴란드 표기법으로 변환하고 계산을 수행 한 후 대답을 표시해야하는 프로그램이 있습니다. 지금은 계산을 올바르게 수행하지 못합니다. 예를 들어 5 + 2 + 5를 입력하면 어떤 이유로 5 + 2 만 등록합니다. 아무도 내가 잘못한 것을 말해 줄 수 있습니까?RPN 계산기가 올바르게 계산을 수행하지 않습니다.
#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이 될 것으로 기대합니다. – us2012
접미사가 필요할 때 중위 표현식을 입력했기 때문에? –