Cod sursa(job #818688)

Utilizator dariusdariusMarian Darius dariusdarius Data 17 noiembrie 2012 20:30:27
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <stdio.h>
#include <string.h>
using namespace std;
char *s;
int e(char * &s,int l=0,int v=0)
{
    if(l==2)
    {
        if(*s=='(')
           {
               ++s;
               int r=e(s);
               ++s;
               return r;
            }
        else if(*s>='0'&&*s<='9')
        {
            int r=v*10+(*s)-'0';
            return e(++s,2,r);
        }
             else return v;
    }
    else if(l==1)
    {
        int r=e(s,2);
        while(1)
        {
            if(*s=='*')
                r*=e(++s,2);
            else if(*s=='/')
                    r/=e(++s,2);
                 else
                    return r;
        }
    }
        else
        {
            int v=e(s,1);
            while(1)
            {
                if(*s=='+')
                    v+=e(++s,1);
                else if(*s=='-')
                        v-=e(++s,1);
                    else return v;
            }
        }
}
int main()
{
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out","w",stdout);
    s = new char[150];
    scanf("%s", s);
    s[strlen(s)]=0;
    printf("%d",e(s));
}