yyzincompleteis1.cpp
来自「某个实验事编写粗糙集智能信息处理的程序」· C++ 代码 · 共 109 行
CPP
109 行
// YyzIncompleteIS1.cpp: implementation of the CYyzIncompleteIS1 class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "YyzIncompleteIS1.h"
#include "globe1.h"
#include "iostream.h"
#include "string.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
using namespace global1;
CYyzIncompleteIS1::CYyzIncompleteIS1()
{
pNum=new int[2];
}
CYyzIncompleteIS1::~CYyzIncompleteIS1()
{
int i,j;
for(i=0;i<Rec_Num;i++)
{
for(j=0;j<ConAttrNum;j++)
delete [] ISTable[i][j];
delete [] ISTable[i];
}
delete [] ISTable;
for(i=0;i<Rec_Num;i++){
delete[] pIS[i];
}
delete[] pIS;
delete[] pDecis;
delete[] pNum;
for(int m=0;m<ConAttrNum+1;m++)
{
delete[] ConName[m];
delete[] ConType[m];
}
delete[] ConType;
delete[] ConName;
// delete[] FileName;
}
void CYyzIncompleteIS1::InitIS(char* filename)
{//初始化信息表
int j;
In_File=filename;
ReadRecConNum(filename,pNum);
Rec_Num=pNum[1];
ConAttrNum=pNum[0];
// delete[] pNum;
ISTable=new char **[Rec_Num];//Initial ISTable
for(i=0;i<Rec_Num;i++)
{
ISTable[i]=new char*[ConAttrNum];
for(j=0;j<ConAttrNum;j++)
ISTable[i][j]=new char [1000];
}
pIS=new float * [Rec_Num];
for(i=0;i<Rec_Num;i++)
{
pIS[i]=new float [ConAttrNum];
}
pConAttr=new int[ConAttrNum];// condition attribut sets
for(i=0;i<ConAttrNum;i++){// condition attribut sets
pConAttr[i]=i;// condition attribut sets
}
ConAttrSet.SetParameter (pConAttr,ConAttrNum);// condition attribut sets
delete[] pConAttr;
pDecis=new int[Rec_Num];
ConName= new char*[ConAttrNum+1];
ConType= new char*[ConAttrNum+1];
for(i=0;i<ConAttrNum+1;i++)
{
ConName[i]=new char[20];
ConType[i]=new char[20];
}
InputInfSys(filename,pIS,ISTable,pDecis,ConName,ConType);
}
bool CYyzIncompleteIS1::perform()
{//算法主程序
///////////////select conditon attributs///////////////////////////////////////////////////////////////////////////////
float Criterion;//规则阀值
int RecNum=Rec_Num;
bool bAllAsterisk=true;
int i,j;
for(i=0;i<RecNum;i++){
for(j=0;j<ConAttrSet.GetCard ();j++){
if(pIS[i][j]!=-1){//存在遗失属性
bAllAsterisk=false;
break;
}
}
}
if(bAllAsterisk){
AfxMessageBox(" 没有意义的数据集");
return false;
}
Criterion =float(CardofPosRegion(pIS,ISTable,pDecis,RecNum,ConAttrSet))/RecNum;
SelConAttrSet(Criterion,Rset, pIS, ISTable,RecNum,ConAttrSet, pDecis);
return true;
}
void CYyzIncompleteIS1::WriteFile(char *filename)
{//写文件
GenerateRules(In_File,filename,pIS,ISTable,pDecis,Rset,Rec_Num,ConAttrNum,ConName,ConType);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?