Pagini recente » Cod sursa (job #1131434) | Cod sursa (job #238252) | Cod sursa (job #2669822) | Cod sursa (job #289369) | Cod sursa (job #1450957)
/**
* Worg
*/
#include <cstdio>
#include <cstring>
#define DIM 100100
using namespace std;
FILE *fin=freopen("evaluare.in","r",stdin);
FILE *fout=freopen("evaluare.out","w",stdout);
char S[DIM], *s = S;
int eval();
int numar();
int factor();
int val(char c)
{
return c - '0';
}
int eval()
{
int ret = numar();
while( *s == '+' || *s == '-' )
{
if( *s == '+' )
{
++s;
ret += numar();
}
else
{
++s;
ret -= numar();
}
}
return ret;
}
int numar()
{
int ret = factor();
while( *s == '/' || *s == '*' )
{
if( *s == '*' )
{
++s;
ret *= factor();
}
else
{
++s;
ret /= factor();
}
}
return ret;
}
int factor()
{
int ret = 0;
if( *s == '(' )
{
++s;
ret = eval();
++s;
}
else
while( '0' <= *s && '9' >= *s )
{
ret = ret * 10 + val( *s );
++s;
}
return ret;
}
int main()
{
gets(S);
printf("%d", eval());
}