Pagini recente » Cod sursa (job #2938207) | Cod sursa (job #13717) | Cod sursa (job #2951495) | Cod sursa (job #382779) | Cod sursa (job #202834)
Cod sursa(job #202834)
#include <stdio.h>
#define N 100002
char s[N];
int p = 0;
int termen();
int factor();
int eval()
{
int r = termen();
while(s[p] == '+' || s[p] == '-')
if(s[p] == '+')
{
p++;
r += termen();
}
else
{
p++;
r -= termen();
}
return r;
}
int termen()
{
int r = factor();
while(s[p] == '*' || s[p] == '/')
if(s[p]=='*')
{
p++;
r *= factor();
}
else
{
p++;
r /= factor();
}
return r;
}
int factor()
{
int r = 0;
if(s[p] == '(')
{
p++;
r = eval();
p++;
}
else
while(s[p] >= '0' && s[p] <= '9')
{
r = r * 10 + s[p] - '0';
p++;
}
return r;
}
int main()
{
freopen("evaluare.in", "rt", stdin);
freopen("evaluare.out", "wt", stdout);
scanf("%s", s);
printf("%d", eval());
}