Pagini recente » Borderou de evaluare (job #881403) | Borderou de evaluare (job #3039055) | Borderou de evaluare (job #2980278) | Borderou de evaluare (job #1844678) | Cod sursa (job #1020008)
#include <cstdio>
FILE*f=fopen("evaluare.in","r");
FILE*h=fopen("evaluare.out","w");
int p;
char s[200001];
int expresie();
int factor(){
int val=0,semn=1;
while ( s[p]=='-' ){
semn=-semn;
++p;
}
if ( s[p]=='(' ){
++p;
val=expresie();
++p;
return semn*val;
}
while ( s[p]>='0'&&s[p]<='9' ){
val=val*10+(s[p]-'0');
++p;
}
return semn*val;
}
int termen(){
int prod=factor();
while ( s[p]=='*'||s[p]=='/' ){
if ( s[p]=='*' ){
++p;
prod*=factor();
}
if ( s[p]=='/' ){
++p;
prod/=factor();
}
}
return prod;
}
int expresie(){
int sum=termen();
while ( s[p]=='+' || s[p]=='-' ){
if ( s[p]=='+' ){
++p;
sum+=termen();
}
if ( s[p]=='-' ){
++p;
sum-=termen();
}
}
return sum;
}
int main()
{
fscanf(f,"%s",&s);
fprintf(h,"%d",expresie());
return 0;
}