Cod sursa(job #274681)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 9 martie 2009 22:07:49
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>

char s[100100];
int n;
int p;

int unu();
int doi();
int trei();

int unu()
{
 int aux=0;
 if (s[p]=='(')
 {
  p++;
  aux=doi();
  p++;
  return aux;
 }
 while(s[p]>='0' && s[p]<='9')
 {
  aux=aux*10+s[p]-'0';
  p++;
 }
return aux;
}


int doi()
{
  int aux=trei();
  while(s[p]=='+' || s[p]=='-')
  {
   if (s[p]=='+')
   {
    p++;
    aux+=trei();
   }
   else
   if (s[p]=='-')
   {
    p++;
    aux-=trei();
   }
  }
return aux;
}

int trei()
{
  int aux=unu();
  while(s[p]=='*' || s[p]=='/')
  {
   if (s[p]=='*')
   {
    p++;
    aux*=unu();
   }
   else
   if (s[p]=='/')
   {
    p++;
    aux/=unu();
   }
  }
return aux;
}




int main()
{
  freopen("evaluare.in","r",stdin);
  freopen("evaluare.out","w",stdout);

  scanf("%s", &s);
  printf("%d", doi());
  return 0;
}