map<char, int> opt;
double cal(double lv, double rv, char op) {
switch (op) {
case '+': return lv + rv;
case '-': return lv - rv;
case '*': return lv * rv;
case '/': return lv / rv;
}
assert(0);
}
double exp_cal(const string &str) {
int sz = str.size();
vector<int> mp(sz, -1);
stack<int> lp;
for (int i = 0; i < sz; ++i) {
if (str[i] == '(') {
lp.push(i);
} else if (str[i] == ')') {
mp[i] = lp.top();
mp[lp.top()] = i;
lp.pop();
}
}
stack<double> e, op;
double v = 0;
for (int i = 0; i <= sz; ++i) {
if (isdigit(str[i])) {
v *= 10;
v += str[i] - '0';
} else {
if (str[i] == '(') {
string tmp(str.begin() + i + 1, str.begin() + mp[i]);
v = exp_cal(tmp);
i = mp[i];
} else {
e.push(v);
v &#
+-*/()整型表达式求值(不带符号)
最新推荐文章于 2024-06-02 19:44:35 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)