Cod sursa(job #274353)

Utilizator mariussMarius Telespan mariuss Data 9 martie 2009 17:26:58
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<stdio.h>
#define nmax 100010
char v[nmax];
int evaluare();
int factor();
int get_nr();
int p;

int evaluare()
{
    int rez=factor();
    while(v[p]=='+' || v[p]=='-')
    {
        if(v[p]=='+' )p++,rez+=factor();
        if( v[p]=='-')p++,rez-=factor();
    }
    return rez;
}
int factor()
{
    int rez=get_nr();
    while(v[p]=='*' || v[p]=='/')
    {
        if(v[p]=='*')p++,rez*=get_nr();
        if(v[p]=='/')p++,rez/=get_nr();
    }
    return rez;
}
int get_nr()
{
    int rez=0;
    if(v[p]=='(')
    {
        p++;
        rez+=evaluare();
        p++;
        return rez;
    }
    else
    {
        for(;'0'<=v[p] && v[p]<='9';p++)
            rez=rez*10+(v[p]-'0');
        return rez;
    }
}
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    
    scanf("%s",&v);
    
    printf("%d\n",evaluare());
    
    return 0;
}