Cod sursa(job #301745)

Utilizator ConsstantinTabacu Raul Consstantin Data 8 aprilie 2009 13:44:23
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>

char ch[100010],*p=ch;
long long add(void);
long long  multi(void);
long long nr(void);

long long add(){
long long  r=multi();
while(*p=='+'||*p=='-')
  switch(*p)  
   
            { case '+' : ++p,r+=multi(); break;  
              case '-' : ++p,r-=multi(); break;  
            }  
return r;
}

long long  multi(){
long long  r=nr();
while(*p=='*'||*p=='/')
 switch(*p)  
   
          { case '*': ++p,r*=nr(); break;  
            case '/': ++p,r/=nr(); break;  
          }  
return r;
}
long long  nr(){
long long r=0;
if(*p=='(')
	{p++;r=add();p++;}
else
	while(*p>='0'&&*p<='9')
		{r=(r*10)+(*p-'0');p++;}
	return r;
}
int main(){
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);

scanf("%s",ch);
printf("%lld",add());
return 0;}