Pagini recente » Cod sursa (job #2471620) | Cod sursa (job #1644317) | Borderou de evaluare (job #1388045) | Cod sursa (job #453258) | Cod sursa (job #409406)
Cod sursa(job #409406)
#include <cstdio>
#define LMAX 100001
int adun();
int inmult();
int termen();
int nr = 0;
char c[LMAX];
int adun()
{
int x = inmult();
while(c[nr] == '+' || c[nr] == '-')
{
nr++;
if(c[nr-1] == '+')
x += inmult();
else
x -= inmult();
}
return x;
}
int inmult()
{
int x = termen();
while(c[nr] == '*' || c[nr] == '/')
{
nr++;
if(c[nr-1] == '*')
x *= termen();
else
x /= termen();
}
return x;
}
int termen()
{
int x=0;
if(c[nr] == '(')
{
nr++;
x=adun();
nr++;
}
while(c[nr] >= '0' && c[nr] <= '9')
x = 10 * x + c[nr++] - '0';
return x;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
fgets(c,LMAX,stdin);
printf("%d",adun());
return 0;
}