Cod sursa(job #179716)

Utilizator katakunaCazacu Alexandru katakuna Data 16 aprilie 2008 11:36:52
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>

char v[100010];
char *p=v;

int termen();
int factor();



int eval(){
int r;
   r=termen();


   while(*p=='+'||*p=='-'){

     if(*p=='+'){
     p++;
     r+=termen();

     }

     else{
     p++;
     r-=termen();

     }

   }


return r;
}



int termen(){

 int r=factor();

   while(*p=='*'||*p=='/'){

     if(*p=='*'){
     p++;
     r*=factor();
     }


     if(*p=='/'){
     p++;
     r/=factor();
     }


   }




return r;
}




int factor(){

int r=0;


  if(*p=='('){
  p++;
  r=eval();
  p++;
  }

  else{

   while(*p>='0'&&*p<='9'){

    r=r*10+*p - '0';

   p++;
   }


  }


return r;
}


int main(){


FILE *f=fopen("evaluare.in","r");
fscanf(f,"%s",v);
fclose(f);

int R;

R = eval();


FILE *g=fopen("evaluare.out","w");
fprintf(g,"%d",R);
fclose(g);

return 0;
}