Pagini recente » Cod sursa (job #2852047) | Cod sursa (job #2946481) | Cod sursa (job #2852999) | Cod sursa (job #2397939) | Cod sursa (job #1452228)
#include <cstdio>
#include <algorithm>
#include <cstring>
#define Dim 100005
using namespace std;
int expresie();
int termen();
int factor();
int p;
char s[Dim];
int expresie()
{
int sum = termen();
while(s[p] == '+' || s[p] == '-')
if(s[p] == '+')
{
p ++;
sum += termen();
}
else
{
p++;
sum -= termen();
}
return sum;
}
int termen()
{
int prod = factor();
while(s[p] == '*' || s[p] == '/')
if(s[p] == '*')
{
p ++;
prod *= factor();
}
else
{
p ++;
prod /= factor();
}
return prod;
}
int factor()
{
int val=0, semn = 1;
while(s[p] == '-')
{
semn = -semn;
p ++;
}
if(s[p] == '(')
{
p ++;
val = expresie();
p ++;
return semn * val;
}
while(s[p] >= '0' && s[p] <='9')
val = val * 10 + s[p ++] - '0';
return semn * val;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
gets(s);
printf("%d",expresie());
return 0;
}