Cod sursa(job #1164928)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 2 aprilie 2014 12:57:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <cstdio>

using namespace std;
char ex[100005],*p;

void read()
{
    scanf("%s",ex);
    p = ex;
}
int factori();
int eval();
int termeni();

int factori()
{
    int r = 0;
    if(*p == '(')
    {
        ++p; /// sarim peste paranteza deschisa
        r = eval();
        ++p;/// sarim peste paranteza inchisa
    }
    else
        while('0' <= *p && *p <='9')
        {
            r = r * 10 + *p - 48;
            ++p;
        }
    return r;
}

int termeni()
{
    int r;
    r = factori();
    while(*p == '*' || *p == '/')
    {
        if(*p == '*')
        {
            ++p;
            r *= factori();
            continue;
        }
        ++p;
        r /= factori();
    }
    return r;
}

int eval()
{
    int r = 0;
    r = termeni();
    while(*p =='+' || *p == '-')
    {
        if(*p == '+')
        {
            ++p;
            r += termeni();
            continue;
        }
        ++p;
        r -= termeni();
    }
    return r;
}

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

    read();
    printf("%d\n",eval());

    return 0;
}