Cod sursa(job #588159)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 7 mai 2011 09:36:39
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream.h>
#define N 100001
char *inf;
long expr(char *&p)
{long term(char*&);
char ch;
long t,r=term(p);
if(*p==0)
      return r;
while((ch=*p)=='+'||ch=='-')
      {t=term(++p);
      if(ch=='+')
            r+=t;
      else
            r-=t;}
return r;}
long term(char *&p)
{long fact(char *&);
char ch;
long t,r=fact(p);
if(*p==0)
      return r;
while((ch=*p)=='*'||ch=='/')
      {t=fact(++p);
      if(ch=='*')
            r*=t;
      else
            r/=t;}
return r;}
long fact(char *&p)
{long r;
if(*p=='(')
      {r=expr(++p),p++;
      return r;}
else
      return (long)strtod(p,&p);}
int main()
{ifstream f("evaluare.in");
ofstream g("evaluare.out");
inf=(char*)malloc(N*sizeof(char));
f>>inf;
g<<expr(inf);
f.close();
g.close();
return 0;}