Cod sursa(job #2072919)

Utilizator mihai.alphamihai craciun mihai.alpha Data 22 noiembrie 2017 14:31:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

char *p = new char[100004];

int calc(void);
int get(void);
int mul(void);

int calc()  {
    int r = get();
    while(*p == '+' || *p == '-')  {
        if(*p == '+')
            p++, r += get();
        else
            p++, r -= get();
    }
    return r;
}

int get()  {
    int r = mul();
    while(*p == '*' || *p == '/')  {
        if(*p == '*')
            p++, r *= mul();
        else
            p++, r /= mul();
    }
    return r;
}

int mul()  {
    int r = 0;
    if(*p == '(')  {
        p++;
        r = calc();
        p++;
    }
    else  {
        while(isdigit(*p))
            r = r * 10 + *p - '0', p++;
    }
    return r;
}

int main()  {
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);
    cin >> p;
    cout << calc();
    return 0;
}