HDU - 1237简单计算器(输出问题)
简单计算器 HDU - 1237
- 题目
- 题解
- 代码
题目
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
Input
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
Output
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
Sample Input
1 + 2
4 + 2 * 5 - 7 / 11
0
Sample Output
3.00
13.36
题解
模拟乘除加减的简单问题,用stack记录乘除加减符号,在一个个带入,很水的题目,注意double精度问题,但是我还是debug了半天,主要是输出问题
cout << fixed << setprecision(2) << si.top() << endl;//WA
printf("%.2lf\n",si.top());//AC
这两个东西是哪里有区别的???哭。。。太菜了我
代码
呃呃呃,这个代码不重要的,都没精简过。。。
string s;
stack<double>si;
stack<char>sc;
int main() {speed;while (1) {getline(cin, s);while (!si.empty())si.pop();while (!sc.empty())sc.pop();if (s == "0")break;for (int i = 0; i < s.length(); i++) {double a = 0; int j;if (s[i] >= '0' && s[i] <= '9') {for (j = i; j < s.length(); j++) {if (s[j] >= '0' && s[j] <= '9') {a = a * 10 + s[j] - '0';}else break;}si.push(a);i = j;}else if (s[i] != ' ') {if (s[i] == '*') {double b = si.top();si.pop();for (j = i + 2; j < s.length(); j++) {if (s[j] >= '0' && s[j] <= '9') {a = a * 10 + s[j] - '0';}else break;}si.push(a *1.000 * b );i = j;}else if (s[i] == '/') {double b = si.top();si.pop();for (j = i + 2; j < s.length(); j++) {if (s[j] >= '0' && s[j] <= '9') {a = a * 10 + s[j] - '0';}else break;}si.push(b*1.000 / a);i = j;}else if (s[i] == '-') {for (j = i + 2; j < s.length(); j++) {if (s[j] >= '0' && s[j] <= '9') {a = a * 10 + s[j] - '0';}else break;}si.push(-a);i = j;sc.push('+');}else sc.push(s[i]);}}while (!sc.empty()) {char c = sc.top();sc.pop();double first, second;first = si.top();si.pop();second = si.top();si.pop();si.push(first + second);}printf("%.2lf\n",si.top());si.pop();}return 0;
}
HDU - 1237简单计算器(输出问题)相关推荐
- HDU 1237 简单计算器
简单计算器 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- HDU - 1237 简单计算器
Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之 ...
- HDU 1237 简单计算器(模拟)
Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值 Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间 ...
- java 杭电1237简单计算器
简单计算器 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 【HDU】1237 简单计算器 (stack)
http://acm.hdu.edu.cn/showproblem.php?pid=1237 题目很好理解,一开始想用优先队列,但好像有点难实现,用stack比较好实现,遇到" * &quo ...
- JavaScript实现简单计算器及输出三角形(初学者适用)
某博主(咳咳本人)太无聊,昨天回想到了大学时学过js实现简单计算器和三角形输出,突然来了兴趣,写了一篇js简单的实现,很适合初学者. 一.简单计算器代码如下: <!DOCTYPE html> ...
- C++——数据结构 简单计算器
简单计算器 输入一个只包含 + - * / 运算符且运算数都为非负整数的表达式,请计算该表达式的值. 输入格式: 测试数据有多组.对于每组测试,输入一个字符串(长度不超过200)表示的表达式,整数和运 ...
- PTA 基础编程题目集 7-12 两个数的简单计算器 C语言
PTA 基础编程题目集 7-12 两个数的简单计算器 C语言 本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加.减.乘.除或求余运算.题目保证输入和输出均不超过整型范围. 输入格式 ...
- 7-12 两个数的简单计算器 (C语言)
7-12 两个数的简单计算器 (10 分)本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加.减.乘.除或求余运算.题目保证输入和输出均不超过整型范围. 输入格式: 输入在一行中依次 ...
最新文章
- Ext JS 4预览:重构和规范渲染过程()
- 计算机应用基础试题事业单位,机关事业单位技术工人计算机应用基础知识复习题...
- matlab ,python,c++关于格式化输出数字的表达
- linux中create命令详解,linux中 pmap 命令详解
- 在linux搭性能测试环境,性能测试学习第七天-----JMeter之linux环境部署篇
- 雷军:年轻人入职半年内不要提意见,不靠谱;微信表情新彩蛋遭疯狂吐槽:满屏“炸屎”;谷歌正式推出 Fuchsia OS|极客头条...
- h5 input 阴影_html5中input表单加边框,阴影效果
- linux htop详细功能
- c语言 16进制编辑器,十六进制编辑器(010 Editor 32位)
- PHP网页监控系统,实现网页变化监控
- minus oracle 顺序_oracle 两表数据对比---minus
- Java调用IE浏览器
- 8.9.2 疯狂填词
- Firefox火狐浏览器插件大全
- vue有纵向和横向表头表格
- Unity3D:2D角色移动篇2:动画的添加
- 2008年顶尖 Web 设计师访谈
- Spring、SpringMVC
- php 图片印章_PHP实现中文圆形印章特效
- matlab中多项式的建立,matlab中多项式
热门文章
- 转载]ASD光谱仪测量地物光谱的数据处理方法及遇到的问题【转】
- 分享106个ASP影音娱乐源码,总有一款适合您
- git将master主分支最新代码合并到自己的分支
- “IE11主页设置已损坏,Internet Explorer重置了你的主页”详细解决办法
- 减速器性能测试软件,RV减速器性能检测平台的研究
- 使用微搭低代码一键搭建企业微官网,网站建设如此简单
- adb向模拟器传递文件
- 2021年电工(初级)新版试题及电工(初级)试题及解析
- 基于STM32单片机的语音播报超声波测距系统【ISD1820录放模块继电器蜂鸣器扬声器】
- Charles4.0最新版破解