您的位置:首页 > 编程语言 > C语言/C++

含括号和四则运算符的简单表达式的计算【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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: