Cod sursa(job #2347922)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 19 februarie 2019 11:18:22
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include<cstdio>
char s[100001],*p=s,r[100001],o;
void S(int b)
{
    char e[100];
    int j;
    if(b<0)
        b=-b,r[o++]='-';
    if(!b)
        r[o++]=48;
    for(j=0;b;b/=10,j++)
        e[j]=b%10+48;
    for(j--;j>=0;j--)
        r[o++]=e[j];
}
int E(int l)
{
    int x,y;
    if(l==2)
        if(*p=='(')
            p++,x=E(0),p++;
        else
            for(x=0;*p>='0'&&*p<='9';p++)
                x=x*10+*p-'0';
    else
        for(x=E(l+1);(!l&&(*p=='+'||*p=='-'))||(l&&(*p=='*'||*p=='/'));x=y)
            if(!l)
                if(*p=='+')
                    p++,y=x+E(l+1);
                else
                    p++,y=x-E(l+1);
            else if(*p=='*')
                p++,y=x*E(l+1);
            else
                p++,y=x/E(l+1);
    return x;
}
int main()
{
    freopen("evaluare.in","r",stdin),freopen("evaluare.out","w",stdout),fread(s,1,100001,stdin),S(E(0)),fwrite(r,1,o,stdout);
}