Cod sursa(job #916530)

Utilizator addy01adrian dumitrache addy01 Data 16 martie 2013 16:59:08
Problema Evaluarea unei expresii Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<cstdio>
using namespace std;
char s[2121434];
char *Buffer=s;
int GetIn()
{
    int nr=0;
    while(*Buffer>='0'&&*Buffer<='9')
        nr=nr*10+*(Buffer++)-'0';
    return nr;
}
int Termen();
int Factor();

int Eval()
{
    int r=Termen();
    while(*Buffer=='+'||*Buffer=='-')
        if(*Buffer=='+')
    {
        *Buffer++;
        r+=Termen();
    }
    else
            {
        *Buffer++;
        r-=Termen();
    }
    return r;
}
int Termen()
{
    int r=Factor();
    while(*Buffer=='*'||*Buffer=='/')
        if(*Buffer=='*')
    {
        *Buffer++;
        r*=Termen();
    }
    else
            {
        *Buffer++;
        r/=Termen();
    }
    return r;
}
int Factor()
{
    int r=0;
    if(*Buffer=='(')
    {
        *Buffer++;
        r=Eval();
        *Buffer++;
    }
    else
        r=GetIn();
    return r;
}
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    gets(s);
    printf("%d",Eval());
    return 0;
}