Cod sursa(job #248586)

Utilizator StigmaSimina Pitur Stigma Data 26 ianuarie 2009 01:12:14
Problema Evaluarea unei expresii Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream.h>
#include <fstream.h>

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

char s[10005],*p=s;

long eval();
long termen();
long factor();


int main()
{fin>>s;   fin.close();
fout<<eval();
fout.close();

return 0;
 }



long eval()
{long x;

 x=termen();
 while (*p=='+' || *p=='-')
   if (*p=='+')
    {++p;
     x+=termen();
    }
   else
    {++p;
    x-=termen();
    }
 return x;
}


long termen()
{long x;
x=factor();

while (*p=='*' || *p=='/')
   if (*p=='*')
    {++p;
     x=x*factor();
    }
   else
    {++p;
    x=x/factor();
    }
 return x;
}


long factor()
{long x=0;

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

 return x;
}