Pagini recente » Cod sursa (job #1488963) | Cod sursa (job #3288069) | Cod sursa (job #2837064) | Cod sursa (job #3237196) | Cod sursa (job #1139918)
#include <stdio.h>
#include <malloc.h>
#include <string.h>
char *s;
long product();
long factor();
long eval(){
long rez=product();
while(*s=='+' || *s=='-')
switch(*s){
case '+':
++s;
rez=rez+product();
break;
case '-':
++s;
rez=rez-product();
break;
}
return rez;
}
long product(){
long rez=factor();
while(*s=='*' || *s=='/')
switch(*s){
case '*':
++s;
rez=rez*factor();
break;
case '/':
++s;
rez=rez/factor();
break;
}
return rez;
}
long factor(){
long rez=0;
if(*s=='('){
++s;
rez=eval();
++s;
}
else{
while(*s>='0' && *s<='9'){
rez=rez*10+(*s-'0');
++s;
}
}
return rez;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
s=(char*)malloc(100000);
scanf("%s",&s);
printf("%ld",eval());
return 0;
}