Mai intai trebuie sa te autentifici.

Cod sursa(job #256446)

Utilizator Sorin_IonutBYSorynyos Sorin_Ionut Data 11 februarie 2009 19:12:55
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <stdio.h>

#define IN "evaluare.in"
#define OUT "evaluare.out"
#define MAX 100010

FILE *fin=fopen(IN,"r");
FILE *fout=fopen(OUT,"w");

char s[MAX],*p=s;

long termen();
long factor();
long eval();

int main()
{
 fscanf(fin,"%s",&s);
 fclose(fin);
     
 fprintf(fout,"%ld\n",eval());  
 fclose(fout);
 
 return 0;
}

long factor()
{
 long r=0;  
 
 if( *p == '(' ) 
 {
  p++;								
  r=eval(); 
  p++;								
 }
 else
  while ( *p>='0' && *p<='9' )
  {		
   r=r*10+(*p-'0');  
   p++;
  }
 return r;
}

long termen()
{
 long r=factor();
 
 while( *p=='*' || *p=='/' )
 {
  switch (*p)
  {
   case '*' :{
              p++;
              r=r*factor();
              break;
             }
   case '/':{
			 p++;
             r=r/factor();
             break;
		    }
  }
 }
 return r;
}

long eval() 
{
 long r=termen();
 
 while(*p=='+' || *p=='-')
 {
  switch (*p)
  {
   case '+':{ 
             p++;
     		 r=r+termen(); 
             break;
            }
   case '-':{
			 p++;
             r=r-termen();
             break;
		    }
  }
 }
 return r;
}