Cod sursa(job #333725)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 23 iulie 2009 16:56:42
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.48 kb
#include <cstdio>  
const long MAX = 100010;  
char S[MAX], *p=S;    
long termen();  
long factor();
long eval() 
{  
    long r = termen();  
    while ( *p=='+' || *p=='-' ) 
          {  
          switch ( *p ) 
             {  
             case '+':  ++p;                        
                r += termen();   
                break;  
             case '-':  ++p;                         
                r -= termen();  
                break;  
             }  
          }  
    return r;  
}  
long termen() 
{  
    long r = factor();  
    while ( *p=='*' || *p=='/' ) 
          {  
          switch ( *p ) 
                 {  
                 case '*' :  ++p;  
                 r *= factor();  
                 break;  
                 case '/':  ++p;  
                 r /= factor();  
                 break;  
                 }  
            }  
    return r;  
}   
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;  
}  
int main() 
{   
     fgets(S, MAX, fopen("evaluare.in", "r"));    
    fprintf(fopen("evaluare.out", "w"), "%ld\n", eval());  
   return 0;  
}