Pagini recente » Cod sursa (job #1148988) | Cod sursa (job #1713591) | Cod sursa (job #2595888) | Cod sursa (job #1833150) | Cod sursa (job #1653013)
#include <fstream>
#include <cstring>
char s[100010],*p=s,operand[4][4]={"+-", "*/", "^", ""};
const long hmax=2;
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 ev(long);
long element() {
long r=0;
if (*p=='('){p++;r=ev(0);p++;}
else{
while(strchr("0123456789",*p)){r=r*10+*(++p-1)-'0';}
}
return r;
}
long ev(long h) {
long r=(h==hmax)?element():ev(h+1);
while(strchr(operand[h],*p)){r=operatie(r,ev(h+1),*(++p-1));}
return r;
}
int main(){
fgets(s,100010,fopen("evaluare.in", "r"));
fprintf(fopen("evaluare.out","w"),"%ld\n",ev(0));
return 0;
}