描述
输入一个后缀表达式,计算它的值。操作数和操作码之间都以空格分开。
输入
一行,后缀表达式
输出
一行,一个整数,为后缀表达式的值
样例输入
16 9 4 3 + * -
样例输出
-47
#include<iostream>
#include<stack>
#define N 110
using namespace std;
class zai{
int top;
int date[N];
public:
zai(){top=-1;}
void in(int a);
int out();
int empty();
};
void zai::in(int a){
date[++top]=a;
}
int zai::out(){
return date[top--];
}
int zai::empty(){
int aa=1;
if(top==-1) aa=0;
return aa;
}
int main(){
string str;
zai s;
int n1,n2;
while(cin>>str)
{
if(str=="+")
{
n1=s.out();
n2=s.out();
if(s.empty()==0)
{
cout<<n2+n1;
break;
}
s.in(n2+n1);
}
else if(str=="-")
{
n1=s.out();
n2=s.out();
if(s.empty()==0)
{
cout<<n2-n1;
break;
}
s.in(n2-n1);
}
else if(str=="/")
{
n1=s.out();
n2=s.out();
if(s.empty()==0)
{
cout<<n2/n1;
break;
}
s.in(n2/n1);
}
else if(str=="*")
{
n1=s.out();
n2=s.out();
if(s.empty()==0)
{
cout<<n2*n1;
break;
}
s.in(n2*n1);
}
else
{
int num=0;
for(int i=0;i<str.size();i++)
{
num*=10;
num+=str[i]-'0';
}
s.in(num);
}
}
return 0;
}