Cod sursa(job #546325)

Utilizator irene_mFMI Irina Iancu irene_m Data 4 martie 2011 19:30:09
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.34 kb
#include <cstdio>
#define infile "evaluare.in"
#define outfile "evaluare.out"
#define MaxN 100005

char s[MaxN];
int N;

int eval();
int termen();
int factor();

int eval()
{
      int r=termen();
      while(s[N]=='+' || s[N]=='-')
      {
            if(s[N]=='+')
            {
                  N++;
                  r+=termen();
            }
            else
            {
                  N++;
                  r+=termen();
            }
      }
      return r;
}

int termen()
{
      int r=factor();
      while(s[N]=='*' || s[N]=='/')
      {
            if(s[N]=='*')
            {
                  N++;
                  r*=factor();
            }
            else
            {
                  N++;
                  r/=factor();
            }
      }
      return r;
}

int factor()
{
      int r=0;
      if(s[N]=='(')
      {
            N++;
            r=eval();
            N++;
      }
      else
      {
            while(s[N]>='0' && s[N]<='9')
            {
                  r=r*10+(int)(s[N]-'0');
                  N++;
            }
      }
      return r;
}

int main()
{
      freopen(infile,"r",stdin);
      freopen(outfile,"w",stdout);

      scanf("%s",&s);
      printf("%d\n",eval());

      fclose(stdin);
      fclose(stdout);
      return 0;
}