Pagini recente » Cod sursa (job #1926256) | Cod sursa (job #1051135) | Cod sursa (job #2715216) | Cod sursa (job #1416387) | Cod sursa (job #862984)
Cod sursa(job #862984)
#include <cstdio>
#include <cstring>
#define LMAX 2
#define NX 100010
using namespace std;
char S[NX], *p = S;
char op[4][4] = { "+-", "*/", "^", "" };
int eval( int a, int b, char o )
{
switch( o )
{
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': return a / b;
}
}
int expr( int lev )
{
int x, y;
if( lev == LMAX )
if( *p == '(' )
++p, x = expr(0), ++p;
else
for( x = 0; *p >= '0' && *p <= '9'; ++p )
x = x * 10 + *p - '0';
else
for( x = expr(lev+1); strchr(op[lev], *p); x = y )
y = eval( x, expr(lev+1), *p++ );
return x;
}
int main() {
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(S);
int l=strlen(S);
S[l]='\n';
S[l+1]='\0';
printf("%d\n", expr(0) );
return 0;
}