#include <iostream>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std;
int main(){
char a[31];
cin.getline(a,31);
stack<double> num;
stack<char> sym;
int len=strlen(a);
double t1,t2,t;
for(int i=len-1;i>=0;){
if((a[i]=='+'||a[i]=='-'||a[i]=='*'||a[i]=='/')&&a[i+1]==' '){
if(num.empty()){
printf("ERROR");
return 0;
}else{
t1=num.top();
num.pop();
}
if(num.empty()){
printf("ERROR");
return 0;
}else{
t2=num.top();
num.pop();
}
switch (a[i]) {
case '+':
num.push(t1+t2); break;
case '-':
num.push(t1-t2); break;
case '*':
num.push(t1*t2); break;
case '/':
if(t2==0){
printf("ERROR");
return 0;
}
num.push(t1/t2);
}
i--;
}
else if(a[i]>='0'&&a[i]<='9'){
while(a[i]>='0'&&a[i]<='9'||a[i]=='.')
i--;
if(a[i]==' '||i==-1)
t=atof(a+i+1);
else{
t=atof(a+i);
i--;
}
num.push(t);
}
else if(a[i]==' ')
i--;
}
if(num.size()!=1){
printf("ERROR");
}
else
printf("%.1f",num.top());
return 0;
}a
7-21 求前缀表达式的值 (25 分)
最新推荐文章于 2021-07-11 20:16:11 发布
1051

被折叠的 条评论
为什么被折叠?



