Cod sursa(job #916465)

Utilizator cont_testeCont Teste cont_teste Data 16 martie 2013 15:50:30
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include<cstdio>

#define MAX_SIZE 100005

FILE *f=fopen("evaluare.in","r");
FILE *g=fopen("evaluare.out","w");

using namespace std;

char sir[MAX_SIZE],*p=sir;

int term();
int factor();


//calculez suma

inline int eval()
{

   int r=term();
  while(*p == '+' || *p == '-')
  {
      switch( *p)
      {
      case '+':
        ++p;
        r+=term();
        break;
      case '-':
        ++p;
        r-=term();
        break;
      }
  }
  return r;

}
//formez termenii pentru suma

int term()
{
    int r=factor();
    while( *p == '*' || *p == '/')
    {
        switch( *p )
        {
      case '*':
        ++p;
        r*=factor();
        break;
      case '/':
        ++p;
        r/=factor();
        break;
        }
   }
   return r;
}

int factor()
{
    int r=0;
    if( *p == '(')
    {

        ++p;
        r=eval();
        ++p;
    }
    else
    {
        while( *p>= '0' && *p <= '9')
        {

            r=r*10+*p-'0';
            ++p;
        }


    }
return r;
}




int main( void )
{
    fgets(sir,MAX_SIZE,f);
    fprintf(g,"%d",eval());
    fclose(f);
    fclose(g);
     return 0;
}