Pagini recente » Cod sursa (job #824713) | Cod sursa (job #2902603) | Cod sursa (job #2039923) | Cod sursa (job #2027363) | Cod sursa (job #254282)
Cod sursa(job #254282)
#include<stdio.h>
FILE *f=fopen("evaluare.in","r"),
*g=fopen("evaluare.out","w");
#define N_MAX 100010
char s[N_MAX];
int p;
int term();
int eval()
{ long r=term();
while(s[p]=='+'||s[p]=='-') if(s[p]=='+') ++p,r+=term();
else ++p,r-=term();
return r;
}
int fact()
{ long r=0;
if(s[p]=='(') { ++p;
r=eval();
++p;
}
else while(s[p]>='0'&&s[p]<='9') { r=(r<<3)+(r<<1)+s[p]-'0';
++p;
}
return r;
}
int term()
{ long r=fact();
while(s[p]=='*'||s[p]=='/') if(s[p]=='*') ++p,r*=fact();
else ++p,r/=fact();
return r;
}
int main()
{ fgets(s,100006,f);
fprintf(g,"%d\n",eval());
fclose(f);
fclose(g);
return 0;
}