前提:
波兰表达式 也称 后缀表达式
逆波兰表达式 即 前缀表达式
一般的表达式 是 中缀表达式
注意:波兰表达式 和 逆波兰表达式 都是没有括号的
举例:
中缀表达式
1 + 2
波兰表达式(后缀表达式)
+ 1 2
逆波兰表达式(前缀表达式)
1 2 +
结果(皆是)
3
但我们今天要讲波兰表达式(后缀表达式)
输入:
波兰表达式(后缀表达式)
输出:
波兰表达式的值(结果)
Sample Input
+ 1 2
Sample Output
3
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
double exp()
{
char s[20];
cin >> s;
switch(s[0])
{
case '+' : return exp() + exp();
case '-' : return exp() - exp();
case '*' : return exp() * exp();
case '/' : return exp() / exp();
default : return atof(s);
}
}
int main()
{
printf("%lf", exp());//读入一个波兰表达式(中间用空格隔开),并计算其值
return 0;
}
解体思路:
exp()主要的作用是求波兰表达式的值,它可以读入一个数字,也可以读入一个运算符
- 若读入的是数字,则返回数字本身
- 若读入的是运算符,则返回一个表达式的值,这个表达式由 读入的运算符 和 两个数字(后面跟着的)组成
补充:
atof() 是 C 语言标准库中的一个字符串处理函数,功能是把字符串转换成浮点数,所使用的头文件为 <stdlib.h>
,在 C++ 中为 <cstdlib>