Pagini recente » Cod sursa (job #590381) | Cod sursa (job #586839) | Cod sursa (job #2460506) | Cod sursa (job #2252957) | Cod sursa (job #760478)
Cod sursa(job #760478)
#include <cstdio>
#include <cstring>
char s[100009];
char *p = s;
const long hmax = 2;
char op[4][4]={"+-","*/","^",""};
long operatie(long x, long y, char c) {
switch ( c ) {
case '+': return x+y;
case '-': return x-y;
case '*': return x*y;
case '/': return x/y;
}
return 0;
}
long eval(long);
long eval(long );
long pr()
{
long r = 0;
if( *p == '(')
{
++p; r = eval(0); ++p;
}
else
{
while(strchr ("0123456789", *p))
r = r * 10 + *(++p - 1) -'0';
}
return r;
}
long eval(long h)
{
long r = (h == hmax) ? pr() : eval(h + 1);
while(strchr(op[h],*p))
r = operatie( r , eval(h + 1), *(++p - 1));
return r;
}
int main()
{
fgets(s, 100010, fopen("evaluare.in", "r"));
fprintf(fopen("evaluare.out", "w"), "%ld\n", eval(0));
return 0;
}