Ejemplo n.º 1
0
    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;
    }
Ejemplo n.º 2
0
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;
	}
}