Pagini recente » Cod sursa (job #562293) | Cod sursa (job #236046) | Cod sursa (job #1372421) | Cod sursa (job #943728) | Cod sursa (job #1584238)
#include <cstdio>
#include <cstring>
#include <cctype>
using namespace std;
const int Nmax = 100010;
char s[Nmax], *p = s;
int eval();
int getNum()
{
int x = 0;
while (isdigit(*p))
x = x * 10 + *p - '0', p++;
return x;
}
int factor()
{
int ret;
if (*p == '('){
p++;
ret = eval();
p++;
}
else ret = getNum();
return ret;
}
int termen()
{
int ret = factor();
while (*p == '*' || *p == '/')
if (*p == '*'){
p++;
ret *= factor();
}
else {
p++;
ret /= factor();
}
return ret;
}
int eval()
{
int ret = termen();
while (*p == '+' || *p == '-')
if (*p == '+'){
p++;
ret += termen();
}
else {
p++;
ret -= termen();
}
return ret;
}
int main()
{
freopen ("evaluare.in", "r", stdin);
freopen ("evaluare.out", "w", stdout);
gets(s);
printf ("%d\n", eval());
return 0;
}