简单计算器 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简单计算器(输出问题)相关推荐

  1. HDU 1237 简单计算器

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

  2. HDU - 1237 简单计算器

    Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之 ...

  3. HDU 1237 简单计算器(模拟)

    Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值 Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间 ...

  4. java 杭电1237简单计算器

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

  5. 【HDU】1237 简单计算器 (stack)

    http://acm.hdu.edu.cn/showproblem.php?pid=1237 题目很好理解,一开始想用优先队列,但好像有点难实现,用stack比较好实现,遇到" * &quo ...

  6. JavaScript实现简单计算器及输出三角形(初学者适用)

    某博主(咳咳本人)太无聊,昨天回想到了大学时学过js实现简单计算器和三角形输出,突然来了兴趣,写了一篇js简单的实现,很适合初学者. 一.简单计算器代码如下: <!DOCTYPE html> ...

  7. C++——数据结构 简单计算器

    简单计算器 输入一个只包含 + - * / 运算符且运算数都为非负整数的表达式,请计算该表达式的值. 输入格式: 测试数据有多组.对于每组测试,输入一个字符串(长度不超过200)表示的表达式,整数和运 ...

  8. PTA 基础编程题目集 7-12 两个数的简单计算器 C语言

    PTA 基础编程题目集 7-12 两个数的简单计算器 C语言 本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加.减.乘.除或求余运算.题目保证输入和输出均不超过整型范围. 输入格式 ...

  9. 7-12 两个数的简单计算器 (C语言)

    7-12 两个数的简单计算器 (10 分)本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加.减.乘.除或求余运算.题目保证输入和输出均不超过整型范围. 输入格式: 输入在一行中依次 ...

最新文章

  1. Ext JS 4预览:重构和规范渲染过程()
  2. 计算机应用基础试题事业单位,机关事业单位技术工人计算机应用基础知识复习题...
  3. matlab ,python,c++关于格式化输出数字的表达
  4. linux中create命令详解,linux中 pmap 命令详解
  5. 在linux搭性能测试环境,性能测试学习第七天-----JMeter之linux环境部署篇
  6. 雷军:年轻人入职半年内不要提意见,不靠谱;微信表情新彩蛋遭疯狂吐槽:满屏“炸屎”;谷歌正式推出 Fuchsia OS|极客头条...
  7. h5 input 阴影_html5中input表单加边框,阴影效果
  8. linux htop详细功能
  9. c语言 16进制编辑器,十六进制编辑器(010 Editor 32位)
  10. PHP网页监控系统,实现网页变化监控
  11. minus oracle 顺序_oracle 两表数据对比---minus
  12. Java调用IE浏览器
  13. 8.9.2 疯狂填词
  14. Firefox火狐浏览器插件大全
  15. vue有纵向和横向表头表格
  16. Unity3D:2D角色移动篇2:动画的添加
  17. 2008年顶尖 Web 设计师访谈
  18. Spring、SpringMVC
  19. php 图片印章_PHP实现中文圆形印章特效
  20. matlab中多项式的建立,matlab中多项式

热门文章

  1. 转载]ASD光谱仪测量地物光谱的数据处理方法及遇到的问题【转】
  2. 分享106个ASP影音娱乐源码,总有一款适合您
  3. git将master主分支最新代码合并到自己的分支
  4. “IE11主页设置已损坏,Internet Explorer重置了你的主页”详细解决办法
  5. 减速器性能测试软件,RV减速器性能检测平台的研究
  6. 使用微搭低代码一键搭建企业微官网,网站建设如此简单
  7. adb向模拟器传递文件
  8. 2021年电工(初级)新版试题及电工(初级)试题及解析
  9. 基于STM32单片机的语音播报超声波测距系统【ISD1820录放模块继电器蜂鸣器扬声器】
  10. Charles4.0最新版破解