<九度 OJ>题目1019:简单计算器
2015-12-10 15:04
399 查看
题目描述:
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
输入:
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
输出:
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
样例输入:
样例输出:
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50249989
原作者博客:http://blog.csdn.net/ebowtang
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
输入:
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
输出:
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
样例输入:
1 + 2 4 + 2 * 5 - 7 / 11 0
样例输出:
3.00 13.36
#include "string" #include <iostream> #include<iomanip> #include <stack> using namespace std; string str; unsigned int pos; double getNum() { double v = 0; for (; pos < str.length(); pos++) { if (str[pos] > '9' || str[pos] < '0') { break; } v *= 10; v += str[pos] - '0'; } return 1.0*v; } int main(int argc, char* argv[]) { double a, b; double v; while (getline(cin,str)) { //"1 + 2" if (str.length()>200) { break; } stack<double> s; pos = 0; s.push(getNum()); if (str.length() == 1 && (str[0] - '0'== 0)) { break; } while (pos < str.length()) { switch (str[pos]) { case '*': pos=pos+2; a = s.top(); s.pop(); b = getNum(); s.push(a*b); break; case '/': pos=pos+2; a = s.top(); s.pop(); b = getNum(); s.push(a / b); break; case '+': pos=pos+2; s.push(getNum()); break; case '-': pos=pos+2; s.push(-1.0*getNum()); break; case ' ': pos++; break; default: break; } } v = 0; while (!s.empty()) { v += s.top(); s.pop(); } cout << fixed << setprecision(2) << v << endl;//精确到小数点后两位 } return 0; } /************************************************************** Problem: 1019 User: EbowTang Language: C++ Result: Accepted Time:0 ms Memory:1524 kb ****************************************************************/
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50249989
原作者博客:http://blog.csdn.net/ebowtang
相关文章推荐
- 一个关于if else容易迷惑的问题
- 动易2006序列号破解算法公布
- 用批处理解决数学问题的代码第1/4页
- C#数据结构之顺序表(SeqList)实例详解
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua教程(七):数据结构详解
- 一道sql面试题附答案
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C# 超高面试题收集整理
- C#数据结构之单链表(LinkList)实例详解
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法