含括号和四则运算符的简单表达式的计算【c++ 50 lines】
2016-07-09 00:11
567 查看
#include<iostream> #include<sstream> #include<string> #include<stack> #include<cstdlib> #pragma warning(disable:4996) using namespace std; #define ll long long #define maxlen 100 int calculate(string s) { istringstream in('+' + s + '+'); long long total = 0, term = 0, n; char op; while (in >> op) { if (op == '+' || op == '-') { total += term; in >> term; term *= 44 - op; } else { in >> n; if (op == '*') term *= n; else term /= n; } } return total; } int main(){ string s; while (cin >> s){ stack<string> sst; string tmp; sst.push(""); for (int i = 0; i < s.size(); i++){ if (s[i] == '('){ sst.push(""); } else if (s[i] == ')'){ char ret[maxlen]; itoa(calculate(sst.top()),ret,10); sst.pop(); sst.top() += ret; } else sst.top() += s[i]; } cout << calculate(sst.top()) << endl; } }
相关文章推荐
- 李洪强漫谈iOS开发[C语言-007]-语言标准简介
- Effective C++:unio
- 再探C++Primer(7) 显式类型转换
- 再探C++Primer(8)try语句块和异常处理
- 奥赛奖金(DAG上的动态规划+记忆化搜索)
- DAG图与拓扑排序 (士兵排队问题)
- Why would you learn C++ in 2016?(2016年,为什么我们要学习C++)
- Why would you learn C++ in 2016?(2016年,为什么我们要学习C++)
- C语言面试经典tips
- 【训练题】拓扑排序
- 【棋盘上的BFS】滑旱冰
- 提高项目28-字符统计
- C语言学习笔记_数组
- 提高项目27.3暴力破解
- 华为机试题—字符串压缩 c++
- 提高项目27.2解密
- (巩固基础篇)排序算法:①插入排序②希尔排序③冒泡排序④选择排序⑤快速排序
- C语言学习笔记_6编译预处理
- 提高项目27.1-字符加密
- C语言中关于内存这个话题