Cod sursa(job #960395)

Utilizator alex_bucevschiBucevschi Alexandru alex_bucevschi Data 10 iunie 2013 13:45:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <cstdio>

using namespace std;
int suma(),produs(),para_nr();
char e[100010],*p;
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    scanf("%s",e);
    p=e;
    printf("%d\n",suma());
    return 0;
}
int suma()
{
    int aux,val=produs();
    while(*p=='+'||*p=='-')
    {
        if(*p=='+'){p++;aux=produs();val+=aux;}
        else {p++;aux=produs();val-=aux;}
    }
    return val;
}
int produs()
{
    int aux,val=para_nr();
    while(*p=='*'||*p=='/')
    {
        if(*p=='*'){p++;aux=para_nr();val*=aux;}
        else {p++;aux=para_nr();val/=aux;}
    }
    return val;
}
int para_nr()
{
    int val;
    if(*p=='(')
       {
           p++;
           val=suma();
           p++;
           return val;
       }
    val=0;
    while('0'<=*p&&*p<='9')
    {
        val*=10;
        val+=*p-'0';
        p++;
    }
    return val;
}