Pagini recente » Cod sursa (job #1681430) | Cod sursa (job #23329) | Cod sursa (job #2415997) | Cod sursa (job #1138163) | Cod sursa (job #1099792)
#include <stdio.h>
#define Nmax 100005
int termen();
int factor();
char a[Nmax], *p;
int eval()
{
int r = termen();
while (*p == '+' || *p == '-'){
if (*p == '+'){
++p;
r += termen();
} else{
++p;
r -= termen();
}
}
return r;
}
int termen()
{
int r = factor();
while (*p == '*' || *p == '/'){
if (*p == '*'){
++p;
r *= factor();
} else{
++p;
r /= factor();
}
}
return r;
}
int factor()
{
int r = 0;
if (*p == '('){
++p;
r = eval();
++p;
} else{
while ('0' <= *p && *p <= '9'){
r = r * 10 + *p - '0';
++p;
}
}
return r;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
scanf("%s\n", a);
p = a;
printf("%d\n", eval());
fclose(stdin);
fclose(stdout);
return 0;
}