Cod sursa(job #1447763)

Utilizator DrumeaVDrumea Vasile DrumeaV Data 5 iunie 2015 10:31:20
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <cstdio>
const int Max = 100001;
char S[Max], *P = S;

long Term();
long Fact();

long Eval()
{
    long R = Term();
    while (*P == '+' || *P == '-')
    {
        switch (*P)
        {
            case '+':
                P++;
                R += Term();
                break;
            case '-':
                P++;
                R -= Term();
                break;
        }
    }
    return R;
}

long Term()
{
    long R = Fact();
    while (*P == '*' || *P == '/')
    {
        switch (*P)
        {
        case '*':
            P++;
            R *= Fact();
            break;
        case '/':
            P++;
            R /= Fact();
            break;
        }
    }
    return R;
}

long Fact()
{
    long R = 0;
    if (*P == '(')
    {
        P++;
        R = Eval();
        P++;
    }
    else
    {
        while (*P >= '0' && *P <= '9')
        {
            R = R*10 + (*P - '0');
            P++;
        }
    }
    return R;
}

int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
     scanf("%s",S);
     printf("%d\n",Eval());
   return 0;
}