📄 output.c
字号:
{result[l]=0;}
head=result;
s=0;
z=0;
function(1,j,count3);
count4=0;
while(result[count4]!=0)
{
for(l=0;l<m;l++)
{checkflag[l]=0;}
for(l=0;l<j;l++)
{checkflag[temp[result[count4]-1]]=1;count4++;}
wf=0;
for(wl=0;wl<num_valuereduct[loop1][i];wl++)
{
wf=1;
for(wk=0;wk<m;wk++)
{
if(readwab(add(path,"vr.wab"),(long int)
(loop1*k*kind*m+i*kind*m+wl*m+wk))==1)
if(checkflag[wk]==0)
{wf=0;break;}
}
if(wf==1)
{break;}
}
if(wf==1)
{checkresult=0;}
else
{checkresult=consistencecheck(i,checkflag);}
if(checkresult==1)
{
for(l=0;l<m;l++)
{
if((checkflag[l]==1)&&
(readwab(add(path,"vc.wab"),(long int)(loop1*k*m+i*m+l))!=1))
{writewab(add(path,"vc.wab"),(long int)(loop1*k*m+i*m+l),0);}
if(checkflag[l]==1)
{writewab(add(path,"vr.wab"),(long int)
(loop1*k*kind*m+i*kind*m+num_valuereduct[loop1][i]*m+l),1);}
}
num_valuereduct[loop1][i]++;
}
}
}
}
}
}
}
void rule_core()
{
int i,j,l,loop0,loop1,loop2,loop3,same,replace;
creatwab(add(path,"rulecore.wab"),(long int)(num_reduct*num_class*num_vr));
for(i=0;i<num_reduct;i++)
{
for(j=0;j<num_class;j++)
{
for(loop0=0;loop0<num_sc_vr[i][j];loop0++)
{
for(loop1=0;loop1<k;loop1++)
if(readwab(add(path,"declink.wab"),(long int)(loop1))==j)
if(readwab(add(path,"consiste.wab"),(long int)(loop1))==1)
if(readwab(add(path,"revalidr.wab"),(long int)(i*k+loop1))==1)
{
replace=0;
for(loop2=0;loop2<num_sc_vr[i][j];loop2++)
if(loop2!=loop0)
{
for(loop3=0;loop3<num_valuereduct[i][loop1];loop3++)
{
same=1;
for(l=0;l<m;l++)
{
if(readwab(add(path,"vr.wab"),(long int)
(i*k*kind*m+loop1*kind*m+loop3*m+l))
!=readwab(add(path,"scvr.wab"),(long int)
(i*num_class*num_vr*(m+1)+j*num_vr*(m+1)+loop2*(m+1)+l)))
{same=0;break;}
}
if(same==1)
{replace=1;break;}
}
if(same==1)
{break;}
}
if(replace==0)
{break;}
}
if(replace==0)
{
writewab(add(path,"rulecore.wab"),
(long int)(i*num_class*num_vr+j*num_vr+loop0),1);
num_rc[i][j]++;
}
else
{writewab(add(path,"rulecore.wab"),
(long int)(i*num_class*num_vr+j*num_vr+loop0),-1);}
}
}
}
}
int isclassredu(int x,int y)
{
int i,j,l,loop1,same,wang=1;
for(i=0;i<k;i++)
{
if(readwab(add(path,"revalidr.wab"),(long int)(i))==1)
if(readwab(add(path,"declink.wab"),(long int)(i))==y)
for(j=0;j<num_valuereduct[x][i];j++)
{
for(loop1=0;loop1<num_vr;loop1++)
if(readwab(add(path,"flag.wab"),(long int)(loop1))==1)
{
same=1;
for(l=0;l<m;l++)
{
if(readwab(add(path,"vr.wab"),(long int)
(x*k*kind*m+i*kind*m+j*m+l))!=readwab(add(path,"scvr.wab"),
(long int)
(x*num_class*num_vr*(m+1)+y*num_vr*(m+1)+loop1*(m+1)+l)))
{same=0;break;}
}
if(same==1)
{break;}
}
if(same==1)
{break;}
}
if(same==0)
{wang=0;break;}
}
return wang;
}
int scan_rulecore(int x,int y,int value)
{
int i,bing=0;
for(i=0;i<num_vr;i++)
{writewab(add(path,"flag.wab"),(long int)(i),0);}
for(i=0;i<num_sc_vr[x][y];i++)
{
if(readwab(add(path,"rulecore.wab"),(long int)
(x*num_class*num_vr+y*num_vr+i))==value)
{writewab(add(path,"flag.wab"),(long int)(i),1);bing++;}
}
if(bing!=0)
{return 1;}
else
{return 0;}
}
void unscan(int x,int y)
{
int i;
for(i=0;i<num_vr;i++)
{
if(readwab(add(path,"flag.wab"),(long int)(i))==1)
if(readwab(add(path,"rulecore.wab"),
(long int)(x*num_class*num_vr+y*num_vr+i))==-1)
{writewab(add(path,"rulecore.wab"),
(long int)(x*num_class*num_vr+y*num_vr+i),0);}
}
}
void rule_reduct()
{
int i,j,loop1,wang,loop2,loop3,l,iscr,coreiscr,control,temp[instance]={0};
creatwab(add(path,"ruleredu.wab"),(long int)
(num_reduct*num_class*kind*num_vr));
creatwab(add(path,"num_rr.wab"),(long int)(num_reduct*num_class));
creatwab(add(path,"flag.wab"),(long int)(num_vr));
for(i=0;i<num_reduct;i++)
{
for(j=0;j<num_class;j++)
{
coreiscr=0;
if(num_rc[i][j]!=0)
{
if(scan_rulecore(i,j,1)==0)
{
printf("\ncore is wrong\n");
/* getch();*/
exit(0);
}
}
if(num_rc[i][j]!=0)
if(isclassredu(i,j)==1)
{
coreiscr=1;
wang=readwab(add(path,"num_rr.wab"),(long int)(i*num_class+j));
for(l=0;l<num_vr;l++)
{
if(readwab(add(path,"flag.wab"),(long int)(l))==1)
{writewab(add(path,"ruleredu.wab"),(long int)
(i*num_class*kind*num_vr+j*kind*num_vr+wang*num_vr+l),1);}
}
writewab(add(path,"num_rr.wab"),(long int)(i*num_class+j),wang+1);
}
if(coreiscr==0)
{
control=num_sc_vr[i][j]-num_rc[i][j];
for(loop1=1;loop1<=control;loop1++)
{
if(scan_rulecore(i,j,-1)==0)
{break;}
loop3=0;
for(loop2=0;loop2<num_vr;loop2++)
{
if(readwab(add(path,"flag.wab"),(long int)(loop2))==1)
{temp[loop3]=loop2;loop3++;}
}
for(l=0;l<sizeofstack;l++)
{stack[l]=0;}
p=stack;
for(l=0;l<sizeofresult;l++)
{result[l]=0;}
head=result;
s=0;
z=0;
function(1,loop1,loop3);
loop3=0;
while(result[loop3]!=0)
{
for(l=0;l<num_vr;l++)
{writewab(add(path,"flag.wab"),(long int)(l),0);}
if(num_rc[i][j]!=0)
if(scan_rulecore(i,j,1)==0)
{printf("\nscan invalid\n");getch();exit(0);}
for(l=0;l<loop1;l++)
{writewab(add(path,"flag.wab"),
(long int)(temp[result[loop3]-1]),1);loop3++;}
if(isclassredu(i,j)==1)
{
unscan(i,j);
wang=readwab(add(path,"num_rr.wab"),(long int)(i*num_class+j));
for(l=0;l<num_vr;l++)
{
if(readwab(add(path,"flag.wab"),(long int)(l))==1)
{writewab(add(path,"ruleredu.wab"),(long int)
(i*num_class*kind*num_vr+j*kind*num_vr+wang*num_vr+l),1);}
}
writewab(add(path,"num_rr.wab"),(long int)(i*num_class+j),
wang+1);
}
}
}
}
}
}
}
void select(int x,int y)
{
int i,j,l,loop1,loop2,loop3,same;
for(i=0;i<readwab(add(path,"num_rr.wab"),(long int)(x*num_class+y));i++)
{
for(j=0;j<num_vr;j++)
{writewab(add(path,"record.wab"),(long int)(y*num_vr+j),0);}
for(j=0;j<num_sc_vr[x][y];j++)
{
if(readwab(add(path,"ruleredu.wab"),(long int)
(x*num_class*kind*num_vr+y*kind*num_vr+i*num_vr+j))==1)
{writewab(add(path,"record.wab"),(long int)(y*num_vr+j),1);}
}
if(y!=num_class-1)
{select(x,y+1);}
else
{
same=0;
for(loop2=num_ruleset[x];loop2<sky;loop2++)
{
for(loop1=0;loop1<num_class;loop1++)
{
for(j=0;j<num_sc_vr[x][loop1];j++)
{
same=1;
if(readwab(add(path,"record.wab"),(long int)(loop1*num_vr+j))
!=readwab(add(path,"bak.wab"),(long int)
(x*kind*num_class*num_vr+loop2*num_class*num_vr+loop1*num_vr+j)))
{same=0;break;}
if(same==0)
{break;}
}
if(same==0)
{break;}
}
if(same==0)
{break;}
}
if(same==0)
{
loop3=0;
for(loop1=0;loop1<num_class;loop1++)
{
for(j=0;j<num_sc_vr[x][loop1];j++)
{
writewab(add(path,"bak.wab"),(long int)(x*kind*num_class*num_vr+
(num_ruleset[x]-1)*num_class*num_vr+loop1*num_vr+j),
readwab(add(path,"record.wab"),(long int)(loop1*num_vr+j)));
if(readwab(add(path,"record.wab"),(long int)(loop1*num_vr+j))==1)
{
for(l=0;l<m+1;l++)
{
if(l==m)
{printf("\t");}
writewab(add(path,"rulesets.wab"),(long int)(x*kind*num_vr*
(m+1)+(num_ruleset[x]-1)*num_vr*(m+1)+loop3*(m+1)+l),
readwab(add(path,"scvr.wab"),(long int)
(x*num_class*num_vr*(m+1)+loop1*num_vr*(m+1)+j*(m+1)+l)));
if(readwab(add(path,"scvr.wab"),(long int)
(x*num_class*num_vr*(m+1)+loop1*num_vr*(m+1)+j*(m+1)+l))
!=-1000)
{printf("%-4d",readwab(add(path,"scvr.wab"),(long int)
(x*num_class*num_vr*(m+1)+loop1*num_vr*(m+1)+j*(m+1)+l)));}
else
{printf(" ");}
}
loop3++;
printf("\n");
}
}
}
num_sets++;
writewab(add(path,"num.wab"),(long int)(x*kind+num_ruleset[x]-1),
(loop3));
num_ruleset[x]--;
printf("\n\n");
}
}
}
for(i=0;i<num_vr;i++)
{writewab(add(path,"record.wab"),(long int)(y*num_vr+i),0);}
}
void rule_sets()
{
int loop1,i;
for(loop1=0;loop1<num_reduct;loop1++)
{num_ruleset[loop1]=1;}
for(loop1=0;loop1<num_reduct;loop1++)
for(i=0;i<num_class;i++)
{num_ruleset[loop1]=num_ruleset[loop1]*
readwab(add(path,"num_rr.wab"),(long int)(loop1*num_class+i));}
creatwab(add(path,"rulesets.wab"),(long int)(num_reduct*kind*num_vr*(m+1)));
creatwab(add(path,"bak.wab"),(long int)(num_reduct*kind*num_class*num_vr));
creatwab(add(path,"num.wab"),(long int)(num_reduct*kind));
for(i=0;i<num_reduct;i++)
{creatwab(add(path,"record.wab"),(long int)(num_class*num_vr));
sky=num_ruleset[i];select(i,0);printf("\n\n");}
}
void recover()
{
int i,l,count,count1,loop,longth,cj,cj1,loop1,loop2;
longth=readdbf(sfname,(long int)(10))-1;
for(loop1=0;loop1<num_reduct;loop1++)
{
if(loop1!=0)
{printf("\n\n");}
for(loop2=0;loop2<kind;loop2++)
{
if(readwab(add(path,"num.wab"),(long int)(loop1*kind+loop2))!=0)
{count=readwab(add(path,"num.wab"),(long int)(loop1*kind+loop2));
if(loop2!=0)
{printf("\n\n");}
for(i=0;i<count;i++)
{
if(i!=0)
{printf("\n");}
count1=0;
for(l=0;l<m;l++)
{
cj1=readwab(add(path,"rulesets.wab"),(long int)
(loop1*kind*num_vr*(m+1)+loop2*num_vr*(m+1)+i*(m+1)+l));
if(cj1>=0)
{
for(loop=0;loop<readwab(add(path,"structur.wab"),
(long int)(l*12+10));loop++)
{
cj=readwab(add(path,"subdbf.wab"),(long int)
(cj1*(longth+1)+count1));
printf("%c",cj);
count1++;
}
}
else
{
for(loop=0;loop<readwab(add(path,"structur.wab"),
(long int)(l*12+10));loop++)
{
printf(" ");
count1++;
}
}
printf(" ");
}
printf("\t");
for(l=m;l<m+n;l++)
{
cj=readwab(add(path,"rulesets.wab"),(long int)
(loop1*kind*num_vr*(m+1)+loop2*num_vr*(m+1)+i*(m+1)+m));
cj1=readwab(add(path,"decclass.wab"),(long int)(cj*n+l-m));
for(loop=0;loop<readwab(add(path,"structur.wab"),(long int)
(l*12+10));loop++)
{
cj=readwab(add(path,"subdbf.wab"),(long int)
(cj1*(longth+1)+count1));
printf("%c",cj);
count1++;
}
printf(" ");
}
} }
}
}
printf("\n");
}
#include "stdio.h"
#include "conio.h"
#include "c:\source\theme\readwab.c"
main(int argc,char *argv[])
{
int i,j,k,cond,deci,reco;
clrscr();
if(argc!=2)
{printf("\nparameter error!\n");exit(0);}
printf("input condition number:");
scanf("%d",&cond);
printf("input decision number:");
scanf("%d",&deci);
printf("input record number:");
scanf("%d",&reco);
printf("\n");
for(i=0;i<reco;i++)
{
printf("%d\t\t",i);
for(j=0;j<cond+deci;j++)
{
if(j==cond)
printf("\t");
printf("%-6d",readwab(argv[1],(long int)(i*(cond+deci)+j)));
}
printf("\n");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -