Pagini recente » Cod sursa (job #3042363) | Cod sursa (job #1626431) | Cod sursa (job #3240445) | Cod sursa (job #1348698) | Cod sursa (job #1392448)
#include<stdio.h>
#define LMAX 1000001
char s[LMAX];
int i;
int eval();
int termen();
int factor();
int main()
{
freopen("evaluare.in" , "r" , stdin);
freopen("evaluare.out" , "w" , stdout );
scanf("%s" , s);
printf("%d\n" , eval());
return 0;
}
int eval()
{
int t = termen();
while(s[i] && ( s[i] == '+' || s[i] == '-' ) )
switch(s[i]){
case '+' :
i++;
t += termen();
break;
case '-':
i++;
t -= termen();
break;
}
return t;
}
int termen()
{
int f = factor();
while(s[i] && ( s[i] == '*' || s[i] == '/') )
switch( s[i] ){
case '*' :
i++;
f *= factor();
break;
case '/':
i++;
f/=factor();
break;
}
return f;
}
int factor()
{
int r;
if(s[i] == '(' ){
i++;
r = eval();
i++;
return r;
}
r = 0;
while(s[i] >= '0' && s[i] <= '9')
r = r*10 + s[i++]-48;
return r;
}