Cod sursa(job #625118)

Utilizator crazzytudTudor Popa crazzytud Data 23 octombrie 2011 19:07:22
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<stdio.h>
int termen() ;

int expresie();

int factor();

char s[100005],*p;
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);

    gets(s);
    p=s;
    printf("%d",expresie());
    return 0;
}



int expresie()
{
    int sum=termen();
    while(*p=='+'||*p=='-')
    {
        if(*p=='+')
        {
            ++p;
            sum+=termen();
            continue;
        }
        ++p;
        sum-=termen();
    }
    return sum;
}


int termen()
{
    int val=factor();
    while(*p=='*'||*p=='/')
    {
        if(*p=='*')
        {
            ++p;
            val*=factor();
            continue;
        }
        ++p;
        val/=factor();
    }
    return val;
}



int factor()
{
    int val=0;
    if(*p=='(')
    {
        ++p;
        val=expresie();
        ++p;

    }else{
        while(*p>='0'&&*p<='9')
        {
            val=val*10+*p-'0';
            ++p;
        }
    }
    return val;
}