Pagini recente » Cod sursa (job #707901) | Cod sursa (job #1559607) | Cod sursa (job #643738) | Cod sursa (job #2718282) | Cod sursa (job #1468233)
#include <cstdio>
const long MAX = 100010;
char S[MAX], *p=S;
long termen();
long factor();
long eval(){
long r=termen();
if (*p=='+' || *p=='-'){
switch (*p){
case '+':++p;r=r+termen();break;
case '-':++p;r=r-termen();break;
}}
return r;
}
long termen(){
long r=factor();
while (*p=='*' || *p=='/'){
switch (*p){
case '*':++p;r=r*termen();break;
case '/':++p;r=r/termen();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/n",eval());
return 0;
}