/*description: 后缀运算符的计算
输入以#结尾 整数运算
例如:
输入: 12+#
输出: 3
author: jz
Date: 20140818*/
#include<stdio.h>
#include<stdlib.h>
#include<stack>
#include<queue>
#include <iostream>
using namespace std;
stack <int> OPND;
int Operate(int a,char theat,int b)
{
switch(theat)
{
case '+' :return a+b;break;
case '-': return a-b;break;
case '*': return a*b;break;
case '/': return a/b;break;
default : printf("error");
}
}
int in(char c)
{
if('+'==c||'-'==c||'*'==c||'/'==c)
return 1;
else
return 0;
}
int calcute()
{
char c=getchar();
while(c!='#')//输入以#结尾
{
if(!in(c))
{
OPND.push(int(c-'0'));
c=getchar();
}
else
{
int a=OPND.top();
OPND.pop();
int b=OPND.top();
OPND.pop();
int r=Operate(b,c,a);
//第一个运算符为栈里面的第二个值
OPND.push(r);
c=getchar();
}
}
return OPND.top();
}
void main()
{
printf("后缀运算符的计算以‘#’结尾\n");
printf("result:%d",calcute());
}
后缀运算符的计算
最新推荐文章于 2022-11-09 21:13:33 发布