Problem Description:

读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。

Input:

测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。

Output

对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。

Sample Input:

1 + 2
4 + 2 * 5 - 7 / 11
0

Sample Output:

3.00
13.36

题解:

#include<bits/stdc++.h>
using namespace std;
map<char, int> mp;
stack<double> num;
stack<char> ope;double strToDou(string s) {stringstream ss;ss<<s;double n;ss>>n;return n;
}void process(char tmp) {while(!ope.empty() && mp[ope.top()]>=mp[tmp]) {double a2 = num.top();num.pop();double a1 = num.top();num.pop();char op = ope.top();ope.pop();double ans = 0;if(op=='+') {ans = a1+a2;}if(op=='-') {ans = a1-a2;}if(op=='*') {ans = a1*a2;}if(op=='/') {ans = a1/a2;}num.push(ans);}if(tmp!='!') {ope.push(tmp);}
}int main() {mp['+'] = 1;mp['-'] = 1;mp['*'] = 2;mp['/'] = 2;string s;getline(cin, s);while(s.compare("0")) {//初始化,清空操作数栈和运算符栈while(!num.empty()) {num.pop();}while(!ope.empty()) {ope.pop();}//遍历输入字符串while(s.find(" ")!=-1) {string tmp = s.substr(0, s.find(" "));s = s.substr(s.find(" ")+1);if(tmp.at(0)=='+' || tmp.at(0)=='-' || tmp.at(0)=='*' || tmp.at(0)=='/') {if(ope.empty() || mp[ope.top()]<mp[tmp.at(0)]) {ope.push(tmp.at(0));} else {process(tmp.at(0));}} else {double n = strToDou(tmp);num.push(n);}}//把最后一个运算数放入栈中double last = strToDou(s);num.push(last);//处理最后一个表达式直到结束if(ope.size()) {process('!');}printf("%.2lf\n", num.top());getline(cin, s);}return 0;
}

1237-简单计算器【浙大计算机研究生复试上机考试-2006年】相关推荐

  1. 浙大计算机复试上机成绩,浙大计算机研究生复试上机考试-2006年

    发指啊... 第一次快写完了结果傲游挂了... ...直接全部重来啊... ...OMG 这套比2005年的稍难, 不过基本都是小模拟啦, 对ACM菜鸟来说都是大水题~~ 1. 还是A+B 注意题目第 ...

  2. 已经有211大学发布计算机专业,研究生复试上机考试说明

    计算机考研复试中,很多大学都会选择机试作为考试形式.机试即是上机考试,在电脑上完成实体,一般都是编写程序,使用OJ系统判断结果. 列举几个常见的OJ,其他OJ还有很多很多,可以去网上找一下. Virt ...

  3. java 杭电1237简单计算器

    简单计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. HDU 1237 简单计算器

    简单计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  5. 计算机考研复试上机算法学习

    计算机考研复试上机算法学习 这篇博客是博主在准备可能到来的线下上机复试基于王道机试指南的学习,将各道习题链接和代码记录下来,这篇博客权且当个记录. 文章目录 计算机考研复试上机算法学习 1.STL容器 ...

  6. 本科计算机专业是机试,华东师大计算机专业复试上机复习攻略+机试技巧

    华东师大自2009年起计算机专业复试上机加入机试内容(目前复试内容=机试+面试),计算机系和计算中心统一上机考试,机试分数占复试总分数的一半左右,而另一半的面试大家都差不多,分数差距不大,所以机试请务 ...

  7. 复旦大学计算机研究生初试分数线,复旦大学计算机研究生复试分数线

    1. 复旦水平测试的计算机试题考些什么大概内容 我一个同学参加过,如上面几位所说,外省是要重点中学推荐才能参加考试.去年貌似是语数外政史地理化生和计算机的十门大综合,全是选择题,选错要倒扣(就是说不会 ...

  8. 计算机复试机试题目与答案,二零一四年华中科技大学计算机研究生复试机试题目...

    2014年华中科技大学计算机研究生复试机试题目 2014年研究生复试终于结束了,因为自己寻找往年机试题目的经历很艰难,故我希望为之后的学弟,学妹们提供一些资料,以供参考. 今年机试题目总共有3道,编译 ...

  9. 计算机复试面试英语自我介绍,天津师范大学计算机研究生复试面试英语自我介绍...

    天津师范大学计算机研究生复试面试英语自我介绍 good morning,madam and sir!it's a great honor for me to meet you here today. ...

最新文章

  1. seo说_百度指数看世间沉浮_如何快速排名-互点快速排名_网站关键词排名常见问题 - 搜狗快速排名...
  2. salt-api https证书报错解决方法
  3. [codevs 1249] 多边形的面积
  4. 阿里云服务器ubuntu14.04安装Redis
  5. 重写Java Object类中的equals()方法
  6. 拾取物品怎么实现_这样的物品品质设定,一眼便知是“欧”还是“非”
  7. 【贪心】Radar Installation(poj 1328)
  8. 锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]
  9. 计算机主机外部的连接端口有何作用,微机原理 课后题 标准答案
  10. 谷歌浏览器中打开IE
  11. C# ado.net数据库连接池,使用长连接访问数据库
  12. 黑群晖的网络录像机启用并直通互联网的几个关键点
  13. 四轮循迹小车基础程序
  14. 全能模拟器retroarch+android,全能模拟器 RetroArch Android
  15. 一个MySQL优化案例的初步思路(r8笔记第87天)
  16. ionic2中的订单详情页面
  17. 小白如何进阶学习编程?
  18. Python Network(二)绘图draw系列draw(),draw_networkx(),draw_networkx_nodes(),draw_networkx_edges()
  19. 基于HMM的拼音转汉字程序
  20. fir.im Weekly - 除了写代码,还需要了解什么

热门文章

  1. Excel 2010 VBA 入门 056 获取当前Windows登录用户名(Environ)
  2. 南阳计算机职称考试报名时间2015,南阳市2015年上半年全国计算机等级考试报名人数共7718人...
  3. java.lang.NoSuchFieldError: INSTANCE 错误的解决方法
  4. [转载]UNICODE,GBK,UTF-8区别
  5. Windows server 2008 优化配置
  6. 原生微信小程序的日历功能
  7. Linux中的密码信息保存文件
  8. 分享一些我做笔记的经验(二)
  9. FMS视频直播系统搭建
  10. 数的三次方根(C++)