📄 output.c
字号:
#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 + -