Cod sursa(job #1412141)

Utilizator BaTDucKMocanu George BaTDucK Data 1 aprilie 2015 09:54:14
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<bits/stdc++.h>

#define Nmax 100005

using namespace std;

char sir[Nmax], *p = sir;

int element_1();
int element_2();

int Solve()
{
    int r = element_1();
    while(*p == '+' || *p == '-') {
        if(*p == '+')
            ++ p,
            r += element_1();
        if(*p == '-')
            ++ p,
            r += element_1();
    }

    return r;
}

int element_1()
{
    int r = element_2();
    while(*p == '*' || *p == '/') {
        if(*p == '*')
            ++ p,
            r *= element_2();
        if(*p == '/')
            ++ p,
            r /= element_2();
    }
    return r;
}

int element_2()
{
    int nr = 0;

    if(*p == '(') {
        ++ p;
        nr = Solve();
        ++ p;
    }

    else
        for( ; *p >= '0' && *p <= '9'; ++ p)
            nr = nr * 10 + *p - '0';

    return nr;
}

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

    gets(sir);

    fprintf(fopen("evaluare.out", "w"), "%d", Solve());

    return 0;
}