题目描述

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

输入

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

运算符和运算数的个数之和不超过 100。

输入的总字符数不超过 1000。

输出

输出为一行,表达式的值,保留 6 位小数。

样例输入输出

样例输入 #1复制

11.0 12.0 + 24.0 35.0 + *

样例输出 #1复制

1357.000000

提示

可以使用 atof 函数将一个 char 数组转化为 double,方法如下:

char str[100];
scanf("%s",str);
double val=atof(str);

代码1:

#include <bits/stdc++.h>

using namespace std;

double sta[1000010];

int top;

char str[105];

int main()

{

    while (cin>>str) {

        if (str[0]=='+'||str[0]=='-'||str[0]=='*'||str[0]=='/') {

            double y=sta[--top];

            double x=sta[--top];

            switch(str[0]) {

                case '+': sta[top++]=x+y; break;

                case '-': sta[top++]=x-y; break;

                case '*': sta[top++]=x*y; break;

                case '/': sta[top++]=x/y; break;

                default: assert(false);

            }

        } else sta[top++]=atof(str);

    }

    cout<<setprecision(6)<<fixed<<sta[top-1]<<endl;

}

代码2:

#include <bits/stdc++.h>

using namespace std;

double sta[1000010];

int top;

char str[105];

int main()

{

    while (cin>>str) {

        if (str[0]=='+'||str[0]=='-'||str[0]=='*'||str[0]=='/') {

            double y=sta[--top];

            double x=sta[--top];

            switch(str[0]) {

                case '+': sta[top++]=x+y; break;

                case '-': sta[top++]=x-y; break;

                case '*': sta[top++]=x*y; break;

                case '/': sta[top++]=x/y; break;

                default: assert(false);

            }

        } else sta[top++]=atof(str);

    }

    cout<<setprecision(6)<<fixed<<sta[top-1]<<endl;

}

上述代码都可以AC

请关注,点赞!

C++题目:逆波兰表达式相关推荐

  1. LeetCode实战:逆波兰表达式求值

    题目英文 Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are ...

  2. 【Java】LeetCode 150. 逆波兰表达式求值 (后缀表达式)

    题目: 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话 ...

  3. LetCode: 150. 逆波兰表达式求值

    提示 LintCode中的相关算法题实现代码,可以在我的GithHub中下载. 题目需求 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另 ...

  4. 简单计算器 逆波兰表达式

    问题 C: 悠派计算器 时间限制: 1 Sec  内存限制: 128 MB 提交: 7  解决: 2 [提交][状态][讨论版][命题人:qianyouyou] 题目描述 yoyo的小老弟小渣渣灰特别 ...

  5. 【数据结构与算法】之深入解析“逆波兰表达式求值”的求解思路与算法示例

    一.题目要求 根据逆波兰表示法,求表达式的值.有效的算符包括 +.-.*./,每个运算对象可以是整数,也可以是另一个逆波兰表达式. 两个整数之间的除法只保留整数部分. 可以保证给定的逆波兰表达式总是有 ...

  6. 调度场算法与逆波兰表达式

    本文的主要内容是如何求一个给定的表达式的值,具体思路就是先将普通算术的中缀表达式转化为后缀表达式,这一步用到的算法叫做调度场算法.然后对后缀表达式,也就是逆波兰表达式求值. 题目:http://acm ...

  7. 复习栈和队列,详解最小栈,栈的弹出压入序列,逆波兰表达式求值

    栈和队列的概念 栈:吃进去吐出来 对列:吃进去拉出来 数据结构中的栈和内存中的区别 数据结构中的栈具有后进先出的特性,而内存中的栈是一个内存空间,只不过这个内存空间具与数据结构的栈具有相同的特性. 栈 ...

  8. openjudge 逆波兰表达式 2694

    2018-3-15 逆波兰表达式 说实话,我觉得这个题目本身就很神奇,我在想这个题目的时候在纠结输入到底应该如何处理,后来在小伙伴的提醒之下写出了答案. 我们可以在函数里面等待输入,当输入的是运算符的 ...

  9. 信息学奥赛一本通(1198:逆波兰表达式)

    1198:逆波兰表达式 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 9734     通过数: 5698 [题目描述] 逆波兰表达式是一种把运算符前置的算术表达 ...

最新文章

  1. ATS 5.3.0在反向代理模式下实现正向代理功能方法
  2. ImportError: No module named _ssl解决方法
  3. 使用非侵入性脑机接口和计算机视觉引导对机器人手臂进行共享控制
  4. 阿里云高级总监谈超大规模超高性能分布式快存储系统
  5. 别人给你网盘分享东西怎么搞到电脑上看呢?
  6. CentOS8下安装docker
  7. mysql更改执行计划_11g中 connect by 语句执行计划改变
  8. java.lang.StringBuffer源码分析
  9. 大数据技术 - 学习之路(一)
  10. python 大智慧股池_大智慧的一般设置及股票池的安装步骤、使用方法
  11. Android源代码目录结构
  12. 对话知名视觉艺术设计师走尺:只要用心 人人是插画师
  13. groupby常用方法
  14. Linux 部署 Oracle xe-21c
  15. AT89S52的看门狗定时器
  16. 计算机应用基础南京廖华,《计算机应用基础》习题及答案
  17. 【实时渲染】实时渲染中的光与颜色
  18. 最近的大哥(单调栈)
  19. eclipse mdt java工程_Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本...
  20. 百胜图CTI拉花比赛上海总决赛

热门文章

  1. 实验4 组建小型企业网
  2. gitlab 修改密码后push报错: ensure the repository remote URL is using HTTPS
  3. Win10开启FTP与配置(完整无错版)
  4. 【K8S】基于单Master节点安装K8S集群
  5. python 监控文件夹存入的文件_文件夹 python
  6. 冻干巨噬细胞膜|脂质体-红细胞膜杂化膜包裹有机磷降解酶|叶酸修饰纳米红细胞膜靶向递药(科研试剂)
  7. 《Unity Shader入门精要》学习笔记
  8. 徐州有华为,转型“真办肆”
  9. java linearlayout_Android LinearLayout线性布局详解
  10. 清华大学丁铭计算机科学,丁铭-哈尔滨工程大学教师个人主页