Cod sursa(job #145547)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 28 februarie 2008 22:18:51
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.h>
#include<ctype.h>
char expr[100100],*c;
long sol;
long sum();
long prod();
long par();
long num();
int main()
{
	FILE *f,*g;f=fopen("evaluare.in","r");g=fopen("evaluare.out","w");
	c=expr;fgets(c,100100,f);
	sol=sum();
	fprintf(g,"%ld\n",sol);fcloseall();return 0;
}
long sum()
{ long rez=prod();
  for(;;){ if(*c=='+'){c++;rez+=prod();}
	   else if(*c=='-'){c++;rez-=prod();}
	   else return rez;
	 }
}
long prod()
{ long rez=par();
  for(;;){ if(*c=='*'){c++;rez*=par();}
	   else if(*c=='/'){c++;rez/=par();}
	   else return rez;
	 }
}
long par()
{ long rez;
  if(*c=='('){c++;rez=sum();c++;return rez;}
  rez=num();return rez;
}
long num()
{ long rez=0;
  while(isdigit(*c)){rez*=10;rez+=(long)(*c-'0');c++;}
  return rez;
}