题目描述
波兰表达式也叫前缀表达式,是一种把运算符前置的算术表达式,例如普通的表达式 2+3 的波兰表示法为 + 2 3。波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如 (2+3)∗4 的波兰表示法为 ∗ + 2 3 4。本题求解波兰表达式的值,其中运算符包括 + − ∗ / 四个。
输入
输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。
输出
输出为一行,表达式的值,保留 6 位小数。
样例输入输出
样例输入 #1
* + 11.0 12.0 + 24.0 35.0
样例输出 #1
1357.000000
提示
可使用 atof(str) 把字符串转换为一个 double 类型的浮点数。atof 定义在 math.h 中。
———————————————————————————————————————————
代码区
考察点
case_____
string____
stringstream___
AC代码:
#include<iostream>
#include<string>
#include<sstream>
#include<cstdio>
using namespace std;
double solve(){
string s;
cin>>s;
int len=s.size();
if (len==1 && !isdigit(s[0]))
switch (s[0]){
case '+': return solve()+solve();
case '-': return solve()-solve();
case '*': return solve()*solve();
case '/': return solve()/solve();
}
else {
stringstream x(s);
double t;
x>>t;
return t;
}
}
int main(){
printf("%lf\n",solve());
return 0;
}
给个赞吧,谢谢!!