Cod sursa(job #1218727)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 12 august 2014 13:20:54
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <cstdio>

using namespace std;

char c[100005],*p;
int factor( void );
int temen( void );
int eval( void );

int factor( void )
{
    int x = 0;
    if(*p == '(')
    {
        ++p;
        x = eval();
        ++p;
    }
    else
        while('0' <= *p && *p <= '9')
        {
            x = x * 10 + *p - 48;
            ++p;
        }
    return x;
}

int termen()
{
    int x = 0;
    x = factor();
    while(*p == '*' || *p == '/')
    {
        if(*p == '*')
            ++p,x *= factor();
        else
            ++p,x /= factor();
    }
    return x;
}

int eval( void )
{
    int x = 0;
    x = termen();
    while(*p  == '+' || *p == '-')
    {
        if(*p == '+')
            ++p,x += termen();
        else
            ++p,x -= termen();
    }
    return x;
}

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

    scanf("%s",c+1);
    c[0] = '#';
    p = c + 1;
    printf("%d\n",eval());

    return 0;
}