Cod sursa(job #738639)

Utilizator Nicusor002Telechi Nicolae Nicusor002 Data 21 aprilie 2012 11:23:38
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<stdio.h>
const int dim=100005;
char expresie[dim]; char *c=expresie;

int factor();
int produs();

int eval(){
    int r=produs();
    while(*c=='+' || *c=='-'){
        switch(*c){
            case '+':
                c++;
                r+=produs();
                break;
            case '-':
                c++;
                r-=produs();
                break;
        }
    }
    return r;
}

int produs(){
    int r=factor();
    while(*c=='*' || *c=='/'){
        switch(*c){
            case '*':
                c++;
                r*=factor();
                break;
            case '/':
                c++;
                r/=factor();
                break;
        }
    }
    return r;
}

int factor(){
    int r=0;
    if(*c=='('){
        c++;
        r=eval();
        c++;
    }else{
        while(*c>='0' && *c<='9'){
            r=r*10+*c-'0';
            *c++;
        }
    }
    return r;
}

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