Cod sursa(job #527758)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 1 februarie 2011 10:55:18
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<iostream.h>
#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 f1("evaluare.in");
ofstream f2("evaluare.out");
inf=(char*)malloc(N*sizeof(char));
f1>>inf;
f2<<expr(inf);
f1.close();
f2.close();
return 0;}