⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 output.c

📁 用c语言编的基于粗糙集理论的属性约简程序
💻 C
📖 第 1 页 / 共 3 页
字号:
	  {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 + -