Cod sursa(job #398283)

Utilizator idomiralinIdomir Alin idomiralin Data 18 februarie 2010 13:22:58
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.41 kb
#include<stdlib.h>
#include<cstdio>
#define lmax 100010

int poz=1;
char v[lmax];


int expr();
int termen();
int eval()
{
          int rez = termen();
          while (v[poz] == '+' || v[poz] =='-')
          {
                if (v[poz] == '+')
                {
                           poz++;
                           rez += termen();
                }
               if (v[poz] == '-')
               {
                          poz++;
                          rez -= termen();
               }
          }
          return rez;
}
int termen()
{
    int rez = expr();
    while (v[poz] == '*' || v[poz] == '/' )
    {
          if (v[poz] == '*')
          {
                     poz++;
                     rez *= expr();
          }
          if (v[poz] == '/')
          {
                     poz++;
                     rez /= expr();
          }
    }      
    return rez;
    
}
int expr()
{
    int rez=0;
    if (v[poz] == '(')
    {
               poz++;
               rez = eval();
               poz++;
               }
       else
       while (v[poz] >= '0' && v[poz] <= '9')
       {
             rez = rez*10 + v[poz] - '0';
             poz++;
             }
     return rez;
}
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    fgets(v+1,lmax,stdin); 
    printf("%d",eval());
    
return 0;
}