Pagini recente » Cod sursa (job #851838) | Rating Vacaru Marta-Patricia (martavacaru) | Cod sursa (job #974464) | Cod sursa (job #2294853) | Cod sursa (job #188964)
Cod sursa(job #188964)
#include <cstdio>
#include <cctype>
#define MAX_N 100002
char A[MAX_N];
int k;
long eval(void);
long termen(void);
long factor(void);
int main()
{
freopen("evaluare.in","rt",stdin);
freopen("evaluare.out","wt",stdout);
gets(A);
printf("%ld\n",eval());
}
long eval()
{
long r = termen();
while(A[k] == '+' || A[k] == '-')
{
switch (A[k])
{
case '+':
++k;
r += termen();
break;
case '-':
++k;
r -= termen();
break;
}
}
return r;
}
long termen()
{
long r = factor();
while(A[k] == '*' || A[k] == '/')
{
switch (A[k])
{
case '*':
++k;
r *= factor();
break;
case '/':
++k;
r /= factor();
break;
}
}
return r;
}
long factor()
{
long r = 0;
if(A[k] == '(')
{
++k;
r = eval();
++k;
}
else
while(isdigit(A[k]))
r = r*10 + A[k++] - '0';
return r;
}