Cod sursa(job #1082569)

Utilizator OctaDuiu Octavian Octa Data 14 ianuarie 2014 19:35:31
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>
using namespace std;
char S[100001],*p=S;
int eval();
int f();
int number();

int eval()
{
    int x=f();
    while(*p=='+' or *p=='-')
    {
        if(*p=='+') ++p,x+=f();
         else
          if(*p=='-') ++p,x-=f();
    }

  return x;
}

int f()
{
    int x=number();
    while(*p=='/' or *p=='*')
    {
        if(*p=='*') ++p,x*=number();
         else
          if(*p=='/') ++p,x/=number();
    }

 return x;
}

int number()
{
    int x=0;
    if(*p=='(') ++p,x=eval(),++p;
     else
      while(*p>='0' && '9'>=*p)
            x=x*10+(*p-'0'),++p;

  return x;
}
int main()
{
    freopen("evaluare.in","r",stdin);freopen("evaluare.out","w",stdout);

    gets(S);
    printf("%d",eval());
    return 0;
}