Pagini recente » Cod sursa (job #2318327) | Cod sursa (job #386403) | Cod sursa (job #3218117) | Cod sursa (job #1597290) | Cod sursa (job #150589)
Cod sursa(job #150589)
#include<stdio.h>
#include<string.h>
char S[100010], *p=S;
void cit();
long eval();
long termen();
long factor();
int main() {
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
cit();
printf("%ld",eval());
return 0;
}
void cit() {
scanf("%s",&S);
}
long eval() {
long r=termen();
while( *p == '+' || *p == '-' ) {
switch(*p) {
case '+' : {
++p;
r+=termen();
break;
}
case '-' : {
++p;
r-=termen();
break;
}
}
}
return r;
}
long termen() {
long r=factor();
while(*p == '*' || *p == '/' ) {
switch(*p) {
case '*': {
++p;
r*=factor();
break;
}
case '/': {
++p;
r/=factor();
break;
}
}
}
return r;
}
long factor() {
long r=0;
if( *p == '(' ) {
++p;
r=eval();
++p;
} else {
while( *p >= '0' && *p <= '9' ) {
r= r*10 + *p-'0';
++p;
}
}
return r;
}