PTA: h0116. 波兰表达式

波兰表达式

题目

(PTA题目描述有误,应该是波兰表达式)逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的逆波兰表示法为* + 2 3 4。本题求解逆波兰表达式的值,其中运算符包括+ - * /四个。

输入格式

输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。

输出格式

输出为一行,表达式的值。

可直接用printf("%f\n", v)输出表达式的值v。

提示

可使用atof(str)把字符串转换为一个double类型的浮点数。atof定义在math.h中。

此题可使用函数递归调用的方法求解。

输入样例

cpp 复制代码
* + 11.0 12.0 + 24.0 35.0

输出样例

cpp 复制代码
1357.000000

代码

cpp 复制代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char s[101]={'\0'};
double ans;
double calculate(){
    cin>>s;
    switch(s[0]){
        case'+':ans=calculate()+calculate();break;
        case'-':ans=calculate()-calculate();break;
        case'*':ans=calculate()*calculate();break;
        case'/':ans=calculate()/calculate();break;
        default:ans=atof(s);
    }
    return ans;
}
int main(){
    printf("%.6lf",calculate());
    cout<<endl;
    return 0;
}
相关推荐
做一个码农都是奢望4 分钟前
计算机控制系统:最小拍控制系统设计入门
数据结构·算法
艾莉丝努力练剑5 分钟前
System V IPC底层原理详解
linux·运维·服务器·网络·c++·人工智能·学习
落羽的落羽6 分钟前
【Linux系统】信号机制拆解,透过内核三张表深入本质
android·java·linux·服务器·c++·spring·机器学习
暴躁网友w6 分钟前
UKF-IMM 与粒子滤波 IMM:计算效率 Matlab 仿真对比
开发语言·matlab
IT猿手8 分钟前
基于控制障碍函数(CBF)的多无人机编队避障路径规划研究,MATLAB代码
开发语言·matlab·无人机·路径规划·动态路径规划
米粒19 分钟前
力扣算法刷题 Day 16
算法·leetcode·职场和发展
重生之后端学习9 分钟前
31. 下一个排列
数据结构·算法·leetcode·职场和发展·排序算法·深度优先
于慨9 分钟前
java Web
java·开发语言·前端
Frostnova丶9 分钟前
LeetCode 3212. 统计X和Y出现次数相等的子矩阵数量
算法·leetcode·矩阵
麦麦鸡腿堡10 分钟前
JavaWeb_maven
java·开发语言·maven