Pagini recente » Cod sursa (job #1716854) | Cod sursa (job #54052) | Cod sursa (job #170974) | Cod sursa (job #60652) | Cod sursa (job #754782)
Cod sursa(job #754782)
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
#define nmax 100010
char s[nmax], *p = s;
long prod();
long par();
long eval()
{
long r = prod();
while(*p == '+' || *p == '-')
{
switch(*p)
{
case '+':
++p;
r += prod();
break;
case '-':
++p;
r -= prod();
break;
}
}
return r;
}
long prod()
{
long r = par();
while(*p == '*' || *p == '/')
{
switch(*p)
{
case '*':
++p;
r *= par();
break;
case '/':
++p;
r /= par();
break;
}
}
return r;
}
long par()
{
long r = 0;
if(*p == '(')
{
++p;
r = eval();
++p;
}else
{
while(*p >= '0' && *p <= '9')
{
r = r * 10 + *p - '0';
++p;
}
}
return r;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
fgets(s, nmax, stdin);
printf("%ld\n", eval());
int i;
scanf("%i", &i);
return 0;
}