Pagini recente » Cod sursa (job #1868792) | Cod sursa (job #2418273) | Cod sursa (job #3228285) | Cod sursa (job #1328363) | Cod sursa (job #386343)
Cod sursa(job #386343)
#include<cstdio>
#define max 100010
char S[max];
char *p=S;
long sub();
long prod();
long eval(){
long r = prod();
while( *p == '+' || *p == '-'){
switch( *p){
case '+':
++p;
r += prod();
break;
case '-':
++p;
r -= prod();
break;
}
}
return r;
}
long prod(){
long r = sub();
while( *p == '*' || *p == '/'){
switch( *p){
case '*':
++p;
r *= sub();
break;
case '/':
++p;
r /= sub();
break;
}
}
return r;
}
long sub(){
long r = 0;
if( *p == '(') {
++p;
eval();
++p;
}
else
while(*p >= '0' && *p <='9') {r = r*10 + *p - '0';++p;}
return r;
}
int main(){
FILE *f=fopen("evaluare.in","r");
FILE *g=fopen("evaluare.out","w");
fgets( S, max, f);
fprintf(g,"%ld\n", eval() );
return 0;
}