Cod sursa(job #896910)

Utilizator DEYDEY2Tudorica Andrei DEYDEY2 Data 27 februarie 2013 17:51:18
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <stdio.h>
char s[100111];
int poz;
int eval();
int term();
int fact()
{
    int aux=0;
    if(s[poz]=='(')
    {
        poz++;
        aux=eval();
        poz++;
        return aux;
    }
    while(s[poz]>='0'&&s[poz]<='9') aux=aux*10+s[poz++]-'0';
    return aux;
}
int term()
{
    int aux=fact();
    while(s[poz]=='*'||s[poz]=='/')
        if(s[poz++]=='*') aux*=fact();
        else aux/=fact();
    return aux;
}
int eval()
{
    int aux=term();
    while(s[poz]=='+'||s[poz]=='-')
        if(s[poz++]=='+') aux+=term();
        elseaux-=term();
    return aux;
}

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