Cod sursa(job #196444)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 26 iunie 2008 15:36:04
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#define Nmax 100002
int p;
char s[Nmax];

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
	     {
	     p++;
	     aux-=trei();
	     }
return aux;
}

int trei()
{int aux=unu();
while (s[p]=='*' || s[p]=='/')
      if (s[p]=='*')
	 {
	 p++;
	 aux*=unu();
	 }
	 else
	     {
	     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;
}