Pagini recente » Cod sursa (job #928311) | Cod sursa (job #1323515) | Cod sursa (job #918041) | Cod sursa (job #601117) | Cod sursa (job #1468251)
#include <cstdio>
const long MAX = 100010;
char S[MAX], *p=S;
long termen();
long factor();
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=r*factor();
break;
case '/':++p;
r=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;
}
int main() {
fgets(S,MAX, fopen("evaluare.in","r"));
fprintf( fopen("evaluare.out","w"),"%lu",eval());
return 0;
}