Pagini recente » Cod sursa (job #1225253) | Cod sursa (job #2772768) | Cod sursa (job #2688863) | Cod sursa (job #1410604) | Cod sursa (job #1861362)
#include <cstdio>
using namespace std;
char s[100005], *p = s;
int termen();
int factor();
int eval()
{
int rez = termen();
while(*p == '+' || *p == '-')
if(*p == '+')
{
++p;
rez += termen();
}
else
{
++p;
rez -= termen();
}
return rez;
}
int termen()
{
int rez = factor();
while(*p == '*' || *p == '/')
if(*p == '*')
{
++p;
rez *= factor();
}
else
{
++p;
rez /= factor();
}
return rez;
}
int factor()
{
int rez = 0;
if(*p == '(')
{
++p;
rez = eval();
++p;
}
else
while(*p >= '0' && *p <= '9')
{
rez = (rez << 1) * 5 + *p - '0';
++p;
}
return rez;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
scanf("%s", s);
printf("%d", eval());
return 0;
}