Cod sursa(job #156411)

Utilizator mircea_infoSuciu Mircea-Gabriel mircea_info Data 12 martie 2008 15:28:16
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <ctype.h>

char s[100001];
int k;
int term(),eval();

int fact(){
    int aux=0;
    if(s[k]=='('){
        k++;
        aux=eval();
        k++;
        return aux;
    }
    while(isdigit(s[k]))
        aux=aux*10+s[k++]-'0';
    return aux;
}

int term(){
    int aux=fact();
    while(s[k]=='*' || s[k]=='/'){
        if(s[k++]=='*')
            aux*=fact();
        else
            aux/=fact();
    }
    return aux;
}

int eval(){
    int aux=term();
    while(s[k]=='+' || s[k]=='-'){
        if(s[k++]=='+')
            aux+=term();
        else
            aux-=term();
    }     
    return aux;
}

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