Pagini recente » Cod sursa (job #961957) | Cod sursa (job #1377103) | Cod sursa (job #551048) | Cod sursa (job #761914) | Cod sursa (job #1164624)
/*
Keep It Simple!
*/
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include<cstdio>
#include<cstring>
char p[100005],*loc;
char operatii[4][4] = { "+-", "*/", "^", "" };
int EvaluateTerms(int a, int b, char op)
{
if (op == '+')
return a + b;
if (op == '-')
return a - b;
if (op == '*')
return a*b;
if (op == '/')
return a / b;
return 1;
}
int Eval(int level)
{
int x, y;
if (level == 2)
{
if (*loc == '(')
{
++loc; x = Eval(0); ++loc;
}
else
for (x = 0; *loc >= '0' && *loc <= '9'; ++loc)
x = x * 10 + (loc[0] - '0');
}
else
for (x = Eval(level + 1); strchr(operatii[level], *loc) && *loc ; x = y)
y = EvaluateTerms(x, Eval(level + 1), *loc++);
return x;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
scanf("%s", p);
loc = p;
printf("%d",Eval(0));
}