7-21 求前缀表达式的值
7-21 求前缀表达式的值(25 分)
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4
的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4
。请设计程序计算前缀表达式的结果值。
输入格式:
输入在一行内给出不超过30个字符的前缀表达式,只包含+
、-
、*
、\
以及运算数,不同对象(运算数、运算符号)之间以空格分隔。
输出格式:
输出前缀表达式的运算结果,保留小数点后1位,或错误信息ERROR
。
输入样例:
+ + 2 * 3 - 7 4 / 8 4
输出样例:
13.0思路:这玩意儿确实很基础,答案参照了下面这个简版的逆波兰表达式写法http://blog.csdn.net/linsheng9731/article/details/21615959
测试点 | 提示 | 结果 | 耗时 | 内存 |
---|---|---|---|---|
0 | sample 4种运算 | 答案正确 | 2 ms | 244KB |
1 | 运算数超过1位整数且有负号 | 答案正确 | 2 ms | 256KB |
2 | 非正常退出 | 答案正确 | 2 ms | 256KB |
3 | 只有1个数字,前有+号 | 答案正确 | 2 ms | 240KB |
第三个测试点卡了会,其实就是除数不能为零的情况。AC代码如下:
#include<stdio.h> #include<math.h> #include<string.h> #include<sstream> #include<stdlib.h> #include<iostream> using namespace std; stringstream ss; int flag; double f() {char c[9];if (!(ss >> c))flag = 1; if (c[1] == '\0'){double numb1, numb2;switch (c[0]){case '+':return f() + f(); break;case '-':return f() - f(); break;case '*':return f()*f(); break;case '/':numb1 = f(); numb2 = f();if (fabs(numb2-0.0)<0.0000001){flag = 1;return 0.0;}else return numb1 / numb2; break;}}return atof(c); } int main() {string s;flag = 0;getline(cin, s);ss << s;double n = f();if (flag)cout << "ERROR" << endl;else printf("%.1lf\n", n); }
转载于:https://www.cnblogs.com/zengguoqiang/p/8460313.html
7-21 求前缀表达式的值相关推荐
- 7-211 求前缀表达式的值 (25 分)
7-211 求前缀表达式的值 (25 分) 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * ...
- PTA求前缀表达式的值python求解
7-41 求前缀表达式的值 分数 25 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 ...
- 3-8 求前缀表达式的值
分数 20 全屏浏览题目 切换布局 作者 DS课程组 单位 浙江大学 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前 ...
- 3-07. 求前缀表达式的值(25) (ZJU_PAT数学)
题目链接:http://pat.zju.edu.cn/contests/ds/3-07 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.前缀表达式指二元运算符位于两个运算数之前,比如2+3*(7 ...
- 7-21 求前缀表达式的值 (25 分)(思路详解)
一:题目 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4.请设 ...
- matlab求下列表达式的值,编程求下列表达式的值
typedef D. _123 2.下列表达式的值哪些不等于 0? A. 2&g... #define M 5 main() { int n,c; n=2; c=M*n; 精彩文档 print ...
- 信息竞赛进阶指南--递归法求中缀表达式的值,O(n^2)(模板)
// 递归法求中缀表达式的值,O(n^2) int calc(int l, int r) {// 寻找未被任何括号包含的最后一个加减号for (int i = r, j = 0; i >= l; ...
- 计算前缀表达式与后缀表达式
前缀表达式:从后往前扫,遇到操作数入栈.遇到字符时取两栈顶元素进行相应运算后结果入栈. 后缀表达式:与上类似,只是是从前往后扫. 求前缀表达式的值 (25 分) 算术表达式有前缀表示法.中缀表示法和后 ...
- 前缀表达式与后缀表达式求法(栈的应用)
1.前缀.中缀.后缀表达式 中缀表达式即为人们熟悉的数学运算式子写法.而前缀.后缀表达式是为了计算机计算方便的写法. 前缀表达式是一种没有括号的算术表达式,与中缀表达式不同的是,其将运算符写在前面,操 ...
最新文章
- 在mac下搭建java开发环境
- js 数组、对象转json 以及json转 数组、对象
- 前端面试题及答案整理(一)
- django如何给上传的图片重命名(给上传文件重命名)
- mysql item_MySQL源代码:关于MySQL的Item对象
- Py中reshape中的-1表示什么【转载】
- VC 无标题栏对话框移动
- 如何成为一个真正在路上的Linuxer
- php区块链开发游戏,php程序员如何开发区块链、以太坊、智能合约的教程
- 2.2.7 虚拟Ethernet以太网卡
- 《概率论与数理统计.宋浩》前七章笔记汇总
- i国网app苹果版_黑白直播app苹果-黑白直播苹果手机版下载
- AmapUtil--高德地图工具类
- OneNote 深度评测:使用资源、插件、模版
- SAP CDS UI 常用注解用法
- 孟岩:想抓住EOS的机会,从这四个方向入手吧!
- python求平均数和中位数
- cron表达式入门_Sourcehunt:Cron管理,Hackathon入门,PHP-GUI…
- ZYNQ之路--程序固化教程
- 《善数者成:大数据改变中国》读书笔记3