Pagini recente » Cod sursa (job #1329784) | Cod sursa (job #1332767) | Cod sursa (job #56994) | Cod sursa (job #56667) | Cod sursa (job #874685)
Cod sursa(job #874685)
#include <cstdio>
using namespace std;
char S[100010];
char *Buffer = S;
int GetInt ()
{
int X = 0;
while (*Buffer >= '0' && *Buffer <= '9')
X = (X * 10) + (*(Buffer ++) - '0');
return X;
}
int termen ();
int factor ();
int eval ()
{
int r = termen ();
while (*Buffer == '+' || *Buffer == '-'){
if (*Buffer == '+'){
++ Buffer;
r += termen ();
}
else{
++ Buffer;
r -= termen ();
}
}
return r;
}
int termen ()
{
int r = factor ();
while (*Buffer == '*' || *Buffer == '/'){
if (*Buffer == '*'){
++ Buffer;
r *= factor ();
}
else{
++ Buffer;
r /= factor ();
}
}
return r;
}
int factor ()
{
int r = 0;
if (*Buffer == '('){
++ Buffer;
r = eval ();
++ Buffer;
}
else
r = GetInt ();
return r;
}
int main()
{
freopen ("evaluare.in", "r", stdin);
freopen ("evaluare.out", "w", stdout);
gets (S);
printf ("%d", eval ());
return 0;
}