C++ 后缀表达式求值

个人简介

大家好,我是3月份新人榜排名第三的 ༺Blog༒Hacker༻
支持我:点赞+收藏⭐️+留言
格言:༺永做优质༒programmer༻

后缀表达式求值

【问题描述】
读入一个后缀表达式(字符串),只含有0-9组成的运算数及
加(+)、减(−)、乘(∗)、除(/,整除)四种运算符,以及空格。

每个运算数之间用一个空格隔开,不需要判断给你的表达式是否合法。以’#'作为结束标志。

保证中间的运算过程不会爆INT

【输入格式】
一行字符,如【题目描述】。

【输出格式】
一个整数,表示表达式的值。

【输入样例】

16 9 4 3 +*-#

【输出样例】

-47

数据规模与约定

表达式长度小于255

CODE

#include
#include
using namespace std;
int stack[260];
int top=0;

int main()
{
	char a[260];
	cin.getline(a,260);
	int i=0,x=0,t1,t2;
	while(a[i]!='#')
	{
		if(a[i]>='0' && a[i]<='9')	{
		x=0;
			while(a[i]>='0' && a[i]<='9')
			{
				x=x*10+a[i]-'0';
				i++;
			}
			stack[++top]=x;
		}
		if(a[i]=='+')
		{
			t1=stack[top--];
			t2=stack[top--];
			stack[++top]=t1+t2;
		}
		else if(a[i]=='*')
		{
			t1=stack[top--];
			t2=stack[top--];
			stack[++top]=t1*t2;
		}
		else if(a[i]=='-')
		{
			t2=stack[top--];
			t1=stack[top--];
			stack[++top]=t1-t2;
		}
		else if(a[i]=='/')
		{
			t2=stack[top--];
			t1=stack[top--];
			stack[++top]=t1/t2;
		}
		i++;
	}
	cout<<stack[top];
	return 0;
}

朋友们,点赞是我更新的动力,明天再见,拜拜!!!

C++ 后缀表达式求值_第1张图片

你可能感兴趣的:(算法,c++,c语言,算法)