Cod sursa(job #1139918)

Utilizator vladradu2014Radu Vlad Alexandru vladradu2014 Data 11 martie 2014 16:52:44
Problema Evaluarea unei expresii Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.03 kb
#include <stdio.h>
#include <malloc.h>
#include <string.h>
char *s;

long product();
long factor();


long eval(){
 long rez=product();
 while(*s=='+' || *s=='-')
   switch(*s){
       case '+':
          ++s;
          rez=rez+product();
       break;
       case '-':
          ++s;
          rez=rez-product();
       break;
   }
 return rez;
}

long product(){
  long rez=factor();
  while(*s=='*' || *s=='/')
    switch(*s){
        case '*':
          ++s;
          rez=rez*factor();
        break;
        case '/':
          ++s;
          rez=rez/factor();
        break;
    }
  return rez;
}

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


int main()
{
   freopen("evaluare.in","r",stdin);
   freopen("evaluare.out","w",stdout);
   s=(char*)malloc(100000);
   scanf("%s",&s);
   printf("%ld",eval());
   
   return 0;
}