对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
输入
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
输出
求该后缀式所对应的算术表达式的值,并输出之。
示例输入
59*684/-3*+#
示例输出
57
提示
基本操作数都是一位正整数!
来源#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
int len,i,j;
char a[10000];
int sum;
int b[10000];
scanf("%s",a);
len=strlen(a);
j=0;
for(i=0; i<len; i++)
{
if(a[i]>='0'&&a[i]<='9')
{
b[j++]=a[i]-'0';
}
else if(a[i]=='+')
{
sum=b[j-2]+b[j-1];
b[j-2]=sum;
j--;
}
else if(a[i]=='-')
{
sum=b[j-2]-b[j-1];
b[j-2]=sum;
j--;
}
else if(a[i]=='*')
{
sum=b[j-2]*b[j-1];
b[j-2]=sum;
j--;
}
else if(a[i]=='/')
{
sum=b[j-2]/b[j-1];
b[j-2]=sum;
j--;
}
else if(a[i]=='#')
{
printf("%d\n",b[0]);
break;
}
}
return 0;
}
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
int len,i,j;
char a[10000];
int sum;
int b[10000];
scanf("%s",a);
len=strlen(a);
j=0;
for(i=0; i<len; i++)
{
if(a[i]>='0'&&a[i]<='9')
{
b[j++]=a[i]-'0';
}
else if(a[i]=='+')
{
sum=b[j-2]+b[j-1];
b[j-2]=sum;
j--;
}
else if(a[i]=='-')
{
sum=b[j-2]-b[j-1];
b[j-2]=sum;
j--;
}
else if(a[i]=='*')
{
sum=b[j-2]*b[j-1];
b[j-2]=sum;
j--;
}
else if(a[i]=='/')
{
sum=b[j-2]/b[j-1];
b[j-2]=sum;
j--;
}
else if(a[i]=='#')
{
printf("%d\n",b[0]);
break;
}
}
return 0;
}
遇到数时 取出 进行 计算 把计算结果再放入栈中, 两个数合成为1个数 继续接着放 故 j 回到j--的位置。