Pagini recente » Cod sursa (job #29368) | Cod sursa (job #1709876) | Cod sursa (job #588159)
Cod sursa(job #588159)
#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;}