P1449 后缀表达式
程序员文章站
2022-06-05 18:03:26
...
题目比较简单,唯一需要注意的地方是可能有连续的数,不是所有数字都是一位数!!因为这个点我卡住了一会儿,下面是AC代码~
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int > num;// 操作数
string str;
cin>>str;
for(int i=0;i<=str.size()-1;i++)
{
if(str[i]>='0'&&str[i]<='9')
{
int sum=0;
while(str[i]>='0'&&str[i]<='9') //解决连续的数字
{
sum=sum*10+str[i]-'0';
i++;
}
i--;//回到.之前的一个数字以便于上面的for循环中的i++;
num.push(sum);
}
else if(str[i]!='.'&&str[i]!='@')
{
int x1=num.top();
num.pop();
int x2=num.top();
num.pop();
int x3;
switch(str[i])
{
case '+':x3=x2+x1;break;
case '-':x3=x2-x1;break;
case '*':x3=x2*x1;break;
case '/':x3=x2/x1;break;
}
num.push(x3);
}
}
cout<<num.top()<<endl;
return 0;
}