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

📄 output.c

📁 用c语言编的基于粗糙集理论的属性约简程序
💻 C
📖 第 1 页 / 共 3 页
字号:
#define kind 8
#define sizeofstack 100
#define sizeofresult 1000
#define instance 100
#define condition 10
#define decision 4
int k,n,m;
int result[sizeofresult],stack[sizeofstack],*head=result,*p=stack,z,s;
int num_core;
int num_reduct;
int num_valuereduct[kind][instance];
int sky;
int num_class;
int num_sc_vr[kind][instance];
int num_vr;
int num_rc[kind][instance];
int num_ruleset[kind];
int num_sets;
int btimef,btimem,etimef,etimem;#include "conio.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "time.h"
char path[5]={''};
char sfname[20]={''};
#include "c:\source\theme\time.c"
#include "c:\source\theme\definati.c"
#include "c:\source\theme\cs.c"
#include "c:\source\theme\add.c"
#include "c:\source\theme\creatwab.c"
#include "c:\source\theme\readwab.c"
#include "c:\source\theme\writewab.c"
#include "c:\source\theme\dbftoc.c"
#include "c:\source\theme\dupl_row.c"
#include "c:\source\theme\display.c"
#include "c:\source\theme\del_attr.c"
#include "c:\source\theme\dupl_col.c"
#include "c:\source\theme\combinat.c"
#include "c:\source\theme\con_rule.c"
#include "c:\source\theme\con_core.c"
#include "c:\source\theme\order.c"
#include "c:\source\theme\con_redu.c"
#include "c:\source\theme\redupl.c"
#include "c:\source\theme\val_core.c"
#include "c:\source\theme\val_redu.c"
#include "c:\source\theme\change.c"
#include "c:\source\theme\rulecore.c"
#include "c:\source\theme\ruleredu.c"
#include "c:\source\theme\rulesets.c"
#include "c:\source\theme\recover.c"
main(int argc,char *argv[])
{
 if(argc!=4)
  {printf("\nparameter error");exit(0);}
 strcpy(path,argv[1]);
 strcpy(sfname,argv[2]);
 n=argv[3][0]-48;
 cs();
 dbftoc(sfname);
 creatwab(add(path,"validrow.wab"),(long int)(k));
 creatwab(add(path,"validcol.wab"),(long int)(m));
 creatwab(add(path,"decclass.wab"),(long int)(k*n));
 creatwab(add(path,"declink.wab"),(long int)(k));
 creatwab(add(path,"consiste.wab"),(long int)(k));
 creatwab(add(path,"core.wab"),(long int)(m));
 creatwab(add(path,"reduresu.wab"),(long int)(kind*m));
 creatwab(add(path,"revalidr.wab"),(long int)(kind*k));
 creatwab(add(path,"vc.wab"),(long int)(kind*k*m));
 creatwab(add(path,"vr.wab"),(long int)(kind*k*kind*m));
 dupl_row();
 display();
 del_attr();
 dupl_col();
 combinat();
 con_rule();
 con_core();
 con_redu();
 re_dupl_row();
 value_core();
 value_reduct();
 change();
 rule_core();
 rule_reduct();
 clrscr();
 printf("Minimal decision algorithms:\n");
 rule_sets();
 recover();
 shijian(&etimef,&etimem);
 if(etimem-btimem<0)
 printf("\nit takes %d:%d\n",etimef-btimef-1,60+etimem-btimem);
 else
 printf("\nit takes %d:%d\n",etimef-btimef,etimem-btimem);
}

void cs()
{
 clrscr();
 printf("ramdriver prompt:%s\n",path);
 printf("source file name:%s\n",sfname);
}

int readdbf(char *name,long int x)
{
 FILE *f;
 unsigned char y;
 if((f=fopen(name,"rb"))==0)
  {printf("\nError opening file %s\n",name);exit(0);}
 if((x*sizeof(char))>=filelength(fileno(f)))
  {printf("\nError operating on %s\n",name);exit(0);}
 fseek(f,x*sizeof(unsigned char),0);
 fread(&y,sizeof(unsigned char),1,f);
 fclose(f);
 return (int)y;
}

#include "c:\source\theme\readdbf.c"
void dbftoc(char *name)
{
 int count,loop1,loop2,i,j,l,horse,lofr=0,same;
 for(i=0;i<4;i++)
  {
   if((readdbf(name,(long int)(7-i)))!=0)
    {
     horse=1;
     for(j=0;j<6-2*i;j++)
      {horse=horse*16;}
     k=k+horse*(readdbf(name,(long int)(7-i)));
    }
  }
 printf("There are %d records in %s",k,name);
 shijian(&btimef,&btimem);
 for(i=0;i<2;i++)
  {
   if(readdbf(name,(long int)(9-i))!=0)
    {
     horse=1;
     for(j=0;j<2-2*i;j++)
      {horse=horse*16;}
     m=m+horse*readdbf(name,(long int)(9-i));
    }
  }
 m=(m-1)/32-n-1;
 printf("\nThere are %d conditions in %s\n",m,name);
 printf("There are %d decisions in %s\n",n,name);
 creatwab(add(path,"structur.wab"),(long int)((m+n)*12));
 for(i=0;i<m+n;i++)
  {
   for(j=0;j<10;j++)
    { writewab(add(path,"structur.wab"),(long int)(i*12+j),
                readdbf(name,(long int)(32+i*32+j)));}
   writewab(add(path,"structur.wab"),(long int)(i*12+10),
                readdbf(name,(long int)(32+i*32+16)));
   lofr=lofr+readdbf(name,(long int)(32+i*32+16));
  }
 lofr++;
 creatwab(add(path,"subdbf.wab"),(long int)(k*(lofr)));
 creatwab(add(path,"list.wab"),(long int)(k*(m+n)));
 horse=0;
 for(i=0;i<m+n;i++)
  {
   count=0;
   for(j=0;j<k;j++)
    {
     if(count==0)
      {same=0;}
     for(loop1=0;loop1<count;loop1++)
      {
       same=1;
       for(l=0;l<readwab(add(path,"structur.wab"),(long int)(i*12+10));l++)
	{
	 if(readdbf(name,(long int)((m+n+1)*32+2+j*lofr+horse+l))!=
	    readwab(add(path,"subdbf.wab"),(long int)(loop1*lofr+horse+l)))
	  {same=0;break;}
	}
       if(same==1)
	{break;}
      }
     if(same==0)
      {
       for(l=0;l<readwab(add(path,"structur.wab"),(long int)(i*12+10));l++)
	{
	 writewab(add(path,"subdbf.wab"),(long int)(count*lofr+horse+l),
		  readdbf(name,(long int)((m+n+1)*32+2+j*lofr+horse+l)));
	}
       count++;
      }
    }
   horse=horse+readwab(add(path,"structur.wab"),(long int)(i*12+10));
  }
 for(i=0;i<k;i++)
  {
   horse=0;
   for(l=0;l<m+n;l++)
    {
     for(j=0;j<k;j++)
      {
       same=1;
       for(loop1=0;loop1<readwab(add(path,"structur.wab"),
            (long int)(l*12+10));loop1++)
	{
	 if(readdbf(name,(long int)((m+n+1)*32+2+i*lofr+horse+loop1))!=
	    readwab(add(path,"subdbf.wab"),(long int)(j*lofr+horse+loop1)))
	  {same=0;break;}
	}
       if(same==1)
	{
	 for(loop1=0;loop1<readwab(add(path,"structur.wab"),
               (long int)(l*12+10));loop1++)
	  {writewab(add(path,"list.wab"),(long int)(i*(m+n)+l),j);}
	 break;
	}
      }
     horse=horse+readwab(add(path,"structur.wab"),(long int)(l*12+10));
    }
  }
}


void creatwab(char *name,long int x)
{
 FILE *f;
 long int i;
 int zero=0;
 if((f=fopen(name,"wb"))==0)
  {printf("\nError creating file %d\n",name);exit(0);}
 for(i=0;i<x;i++)
  {fwrite(&(zero),sizeof(zero),1,f);}
 fclose(f);
}

int readwab(char *name,long int x)
{
 FILE *f;
 int y;
 if((f=fopen(name,"rb"))==0)
  {printf("\nError opening file %s\n",name);exit(0);}
 if((x*sizeof(int))>=filelength(fileno(f)))
  {printf("\nError operating on %s\n",name);exit(0);}
 fseek(f,x*sizeof(int),0);
 fread(&y,sizeof(int),1,f);
 fclose(f);
 return y;
}

void writewab(char *name,long int x,int y)
{
 FILE *f;
 if((f=fopen(name,"rb+"))==0)
  {printf("\nError opening file %d\n",name);exit(0);}
 rewind(f);
 fseek(f,x*sizeof(int),1);
 fwrite(&y,sizeof(int),1,f);
 fclose(f);
}

char *add(char *s1,char *s2)
{
 char temp[225]={''},*st1,*st2,*st3;
 int i;
 i=0;
 st1=s1;
 st2=s2;
 st3=temp;
 while(*st1!='\0')
  {temp[i]=*st1;st1++;i++;}
 while(*st2!='\0')
  {temp[i]=*st2;st2++;i++;}
 temp[i]='\0';
 return st3;
}

void shijian(int *a,int *b)
{
 struct tm *timeptr;
 time_t secsnow;
 time(&secsnow);
 timeptr=localtime(&secsnow);
 *a=timeptr->tm_min;
 *b=timeptr->tm_sec;
 return;
}
void push(int x)
{*p=x;
 p++;}
void pop()
{p--;}
void scopy(int m1)
{int i,*q;
 q=stack;
 for(i=1;i<=m1;i++)
 {*head=*q;
  head++;
  q++;}
 }
void function(int x,int m1,int n1)
{int i,c;
 if((m1==0)||(m1>n1))
  {return;}
 z++;
 c=n1-m1+z;
 for(i=x;i<=c;i++)
 {push(i);
  s++;
  if(s==m1)
   {scopy(m1);
    pop();
    s--;
    }
  else
   {function(i+1,m1,n1);}
  }
 pop();
 s--;
 z--;
 return;}
void dupl_row()
{
 int i,j,l,same;
 int valid_row[instance]={0};
 for(i=0;i<k;i++)
  {valid_row[i]=1;}
 for(i=0;i<k;i++)
  {
   if(valid_row[i]==1)
    {
     for(j=i+1;j<k;j++)
      {
       same=1;
       for(l=0;l<m+n;l++)
	{
	 if(readwab(add(path,"list.wab"),(long int)(i*(m+n)+l))
             !=readwab(add(path,"list.wab"),(long int)(j*(m+n)+l)))
	  {same=0;break;}
	}
       if(same==1)
	{valid_row[j]=-1000-i;}
      }
    }
  }
 for(i=0;i<k;i++)
  {writewab(add(path,"validrow.wab"),(long int)(i),valid_row[i]);}
}
void display()
{
 int i,j,hang=0;
 printf("Decision table");
 for(i=0;i<k;i++)
 if(readwab(add(path,"validrow.wab"),(long int)(i))==1)
  {
   printf("\n");
   if(hang==20)
    {printf("\npress any key!\n");
     /*getch();*/
     clrscr();hang=0;}
   for(j=0;j<m+n;j++)
    {
     if(j==m)
      printf("\t");
     printf("%-4d",readwab(add(path,"list.wab"),(long int)(i*(m+n)+j)));
    }
    hang++;
  }
 printf("\n");
}

void del_attr()
{
 int i,j,l,same;
 int valid_col[condition]={0};
 for(i=0;i<m;i++)
  {
   for(l=0;l<k-1;l++)
   {
     same=1;
     if(readwab(add(path,"validrow.wab"),(long int)(l))==1)
     for(j=l+1;j<k;j++)
      {
       if(readwab(add(path,"validrow.wab"),(long int)(j))==1)
       if(readwab(add(path,"list.wab"),(long int)(j*(m+n)+i))!=
	  readwab(add(path,"list.wab"),(long int)(l*(m+n)+i)))
	{same=0;break;}
      }
     if(same==0)
     {valid_col[i]=1;break;}
   }
  }
 for(i=0;i<m;i++)
  {writewab(add(path,"validcol.wab"),(long int)(i),valid_col[i]);}
}
void dupl_col()
{
 int i,j,l,same;
 for(i=0;i<m-1;i++)
 if(readwab(add(path,"validcol.wab"),(long int)(i))==1)
 for(j=i+1;j<m;j++)
  {
   same=1;
   for(l=0;l<k;l++)
   {
    if(readwab(add(path,"list.wab"),(long int)(l*(m+n)+i))!=
       readwab(add(path,"list.wab"),(long int)(l*(m+n)+j)))
     {same=0;break;}
   }
   if(same==1)
    {writewab(add(path,"validcol.wab"),(long int)(j),-1000-i);}
  }
}
void combinat()
{
 int i,j,l,same,different,count=0;
 for(i=0;i<k;i++)
 {
  if(count==0)
   {
    writewab(add(path,"declink.wab"),(long int)(0),0);
    for(l=m;l<m+n;l++)
     {writewab(add(path,"decclass.wab"),(long int)(l-m),
               readwab(add(path,"list.wab"),(long int)(l)));}
    count=1;
   }
  else
   {
   different=0;
   for(j=0;j<count;j++)
    {
     same=1;
     for(l=m;l<m+n;l++)
      {
       if(readwab(add(path,"decclass.wab"),(long int)(j*n+l-m))!=
	  readwab(add(path,"list.wab"),(long int)(i*(m+n)+l)))
	 {same=0;different++;break;}
      }
     if(same==1)
      {writewab(add(path,"declink.wab"),(long int)(i),j);break;}
    }
   if(different==count)
     {
      for(l=m;l<m+n;l++)
      {writewab(add(path,"decclass.wab"),(long int)(count*n+l-m),
       readwab(add(path,"list.wab"),(long int)(i*(m+n)+l)));}
       writewab(add(path,"declink.wab"),(long int)(i),count);
      count++;
      }
   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -