Cod sursa(job #1747945)

Utilizator dodecagondode cagon dodecagon Data 25 august 2016 20:27:13
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
#include <string.h>

char s[100009],*p ;

long ter();
long fact();

long evaluare()
{
   long rez=ter();
    while (*p=='+' || *p=='-')
    {
    	if (*p=='+')
    		p++,rez+=ter(); else 
    	if (*p=='-') 
    		p++,rez-=ter();
    }

    return rez;
}

long ter()
{
   long rez=fact();
   while (*p=='*' || *p=='/')
   {
   	 if (*p=='*')
   	 	p++,rez*=fact(); else 
   	 if (*p=='/')
   	 	p++,rez/=fact();
   }

   return rez;
}

long fact()
{
	long rez=0;
  if (*p<=57 && *p>=48)
      {
      	while (*p<=57 && *p>=48)
      		rez=rez*10+*p-48,++p;
      	return rez;
      }
    ++p;
    rez=evaluare();
    ++p;
    return rez;
}

int main()
{
   
   FILE * in = fopen("evaluare.in","r");
   FILE * out = fopen("evaluare.out","w");

   fgets(s,100009,in);

   p=&s[0];

   fprintf(out,"%d",evaluare());


  fclose(in);
  fclose(out);

	return 0;
}