Pagini recente » Cod sursa (job #2691547) | Cod sursa (job #1560998) | Cod sursa (job #2140251) | Cod sursa (job #354246) | Cod sursa (job #533139)
Cod sursa(job #533139)
#include <stdio.h>
FILE *f=fopen("evaluare.in","r");
FILE *g=fopen("evaluare.out","w");
int pr[256],i,j,b[100001],n,m,nr,ok;
char c,a[100001];
void calcul() {
int rez;
switch(a[n]){
case'+':rez=b[m-1]+b[m];
break;
case'-':rez=b[m-1]-b[m];
break;
case'*':rez=b[m-1]*b[m];
break;
case'/':rez=b[m-1]/b[m];
break;
}
n--;m--;b[m]=rez;
}
int main() {
pr['(']=0;
pr['+']=pr['-']=1;
pr['*']=pr['/']=2;
while(fscanf(f,"%c",&c)!=EOF&&c!='\n')
if(c>='0'&&c<='9'){
ok=1;
nr=nr*10+c-'0';}
else {
if(ok==1){
m++;
b[m]=nr;
nr=0;ok=0;
}
if(c=='(')
n++,a[n]=c;
else
if(c==')'){
while(a[n]!='(')
calcul();
n--;
}
else{
while(n!=0&&pr[a[n]]>=pr[c]&&a[n]!='(')
calcul();
n++;
a[n]=c;
}
}
if(ok==1)
m++,b[m]=nr;
while(n!=0)
calcul();
fprintf(g,"%d",b[1]);
return 0;
}