Pagini recente » Cod sursa (job #2338384) | Cod sursa (job #1309493) | Cod sursa (job #1376605) | Cod sursa (job #1673007) | Cod sursa (job #1107264)
# include <cstdio>
const int LMAX = 100000;
char s [LMAX];
char * p = s;
bool cifra (char c)
{
if ('0' <= c)
if (c <= '9')
return true;
return false;
}
void init ()
{
freopen ("evaluare.in", "r", stdin);
freopen ("evaluare.out", "w", stdout);
gets (s);
}
int factor ();
int termen ()
{
int nr = factor ();
while (* p == '*' || * p == '/')
if (* p == '*')
{
p ++;
nr *= factor ();
}
else if (* p == '/')
{
p ++;
nr /= factor ();
}
p ++;
return nr;
}
int eval ()
{
int nr = termen ();
while (* p == '+' || * p == '-')
if (* p == '+')
{
p ++;
nr += termen ();
}
else if (* p == '-')
{
p ++;
nr -= termen ();
}
p ++;
return nr;
}
int factor ()
{
int nr = 0;
if (* p == '(')
{
p ++;
nr = eval ();
p ++;
}
else
while (cifra (* p))
{
nr = nr * 10 + * p - '0';
p ++;
}
return nr;
}
int main ()
{
init ();
printf ("%d", eval ());
return 0;
}