Pagini recente » Cod sursa (job #1321527) | Cod sursa (job #2301529) | Cod sursa (job #2436145) | Cod sursa (job #733068) | Cod sursa (job #446263)
Cod sursa(job #446263)
#include <cstdio>
#define MAX 100010
#define IN "evaluare.in"
#define OUT "evaluare.out"
char S[MAX], *p = S;
int subexp();
int fact();
int solve();
int main()
{
freopen(IN,"r",stdin);
freopen(OUT,"w",stdout);
fgets(S, MAX, stdin);
printf("%d",solve());
return 0;
}
int solve()
{
int r = subexp();
while ( *p == '+' || *p == '-' )
if ( *p == '+' )
p++, r += subexp();
else if ( *p == '-' )
p++, r -= subexp();
return r;
}
int subexp()
{
int r = fact();
while ( *p == '*' || *p == '/' )
if ( *p == '*' )
p++, r *= fact();
else if ( *p == '/' )
p++, r /= fact();
return r;
}
int fact()
{
int r = 0;
if ( *p == '(' )
p++, r = solve(), p++;
else
while ( *p >= '0' && *p <= '9' )
r = r * 10 + *p++ - '0';
return r;
}