Cod sursa(job #1643726)

Utilizator florin.elfusFlorin Elfus florin.elfus Data 9 martie 2016 19:59:01
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <bits/stdc++.h>

using namespace std;

char x[111111];

int poz;
int solve1();
int solve2();
int solve3();

int main() {
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);

    gets(x + 1);
    poz = 1;
    printf("%d", solve1());
}

int solve1() {
    int res = solve2();
    while (x[poz] == '+' || x[poz] == '-') {
        if (x[poz] == '+') {
            ++poz;
            res += solve2();
        } else {
            ++poz;
            res -= solve2();
        }
    }
    return res;
}

int solve2() {
    int res = solve3();
    while (x[poz] == '*' || x[poz] == '/') {
        if (x[poz] == '*') {
            ++poz;
            res *= solve3();
        } else {
            ++poz;
            res /= solve3();
        }
    }
    return res;
}

int solve3() {
    int res = 0;
    if (x[poz] == '(') {
        ++poz;
        res = solve1();
        ++poz;
    } else
        while (x[poz] >= '0' && x[poz] <= '9') {
            res = res * 10 + x[poz] - '0';
            ++poz;
        }
    return res;
}