int calculate(string s) { vector<string> numberAndOps = tokenizeStringToVector(s); int n = numberAndOps.size(); int d[n], p = 0, q = 0; char c[n]; for (int i = 0; i < n; i++) { if (isMultiOrDivide(numberAndOps[i])) { int op1 = d[p - 1]; int op2 = toInt(numberAndOps[i + 1]); if (numberAndOps[i] == "/") { d[p - 1] = op1 / op2; } else { d[p - 1] = op1 * op2; } i++; } else if (isPlusOrMinus(numberAndOps[i])) { c[q++] = numberAndOps[i][0]; } else { d[p++] = toInt(numberAndOps[i]); } } int ans = d[0]; for (int i = 0; i < q; i++) { if (c[i] == '+') { ans += d[i + 1]; } else { ans -= d[i + 1]; } } return ans; }
bool sumExpressionDash(char s[],int &position) { if (isPlusOrMinus(s[position])) { int current = position + 1; if (multiplicationExpression(s, current) && (sumExpressionDash(s, current))) { position = current; return true; } else return true; } else { return true; } }