View Code of Problem 94

#include <iostream>
#include <string>
using namespace std;

int lips(string input, int now) {
    int sum = 0;
    if (input[now] == '('){
        sum = lips(input, now + 1);
    }
    else if (input[now] == '+') {
        sum = (input[now+1] - '0');
        for(int i = now+2; input[i] != ')'; i++){
            if (input[i] == '('){
                sum += lips(input, i + 1);
                while(input[i] !=')')
                    i++;
                continue;
            }
            sum += (input[i]-'0');
        }
    } 
    else if (input[now] == '-') {
        sum = (input[now+1] - '0');
        for(int i = now+2; input[i] != ')'; i++){
            if (input[i] == '('){
                sum -= lips(input, i + 1);
                while(input[i] !=')')
                    i++;
                continue;
            }
            sum -= (input[i]-'0');
        }
    } 
    else if (input[now] == '*') {
        sum = (input[now+1] - '0');
        for(int i = now+2; input[i] != ')'; i++){
            if (input[i] == '('){
                sum *= lips(input, i + 1);
                while(input[i] !=')')
                    i++;
                continue;
            }
            sum *= (input[i]-'0');
        }
    } 
    else if (input[now] == '/') {
        sum = (input[now+1] - '0');
        for(int i = now+2; input[i] != ')'; i++){
            if (input[i] == '('){
                sum /= lips(input, i + 1);
                while(input[i] !=')')
                    i++;
                continue;
            }
            sum /= (input[i]-'0');
        }
    }
    return sum;
}
int main(void) {
    string s, b;
    getline(cin, s);
    for (int i = 0; i < s.length(); i++) {
        if (s[i] != ' ')
            b += s[i];
    }
    cout << lips(b, 0) << endl;
}

Double click to view unformatted code.


Back to problem 94