yyzincompleteis2.cpp
来自「某个实验事编写粗糙集智能信息处理的程序」· C++ 代码 · 共 113 行
CPP
113 行
// YyzImcompleteIS2.cpp: implementation of the CYyzImcompleteIS2 class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "YyzIncompleteIS2.h"
#include "globe2.h"
#include "iostream.h"
#include <string.h>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
using namespace globe2;
CYyzIncompleteIS2::CYyzIncompleteIS2()
{
pNum=new int[2];
// FileName=new char[256];
}
CYyzIncompleteIS2::~CYyzIncompleteIS2()
{
int i,j;
for(i=0;i<Rec_Num;i++)
{
for(int 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 CYyzIncompleteIS2::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 CYyzIncompleteIS2::perform()
{
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) && strcmp(ISTable[i][j],"-")==0))
{
bAllAsterisk=false;//至少存在一个非"-"的数据
break;
}
}
}
if(bAllAsterisk){
AfxMessageBox(" 没有意义的数据集");
return false;
}
float Criterion;
Criterion =float(CardofPosRegion(pIS,ISTable,pDecis,RecNum,ConAttrSet))/(1.0*RecNum);
SelConAttrSet(Criterion,Rset, pIS,ISTable,RecNum,ConAttrSet, pDecis);
return true;
}
void CYyzIncompleteIS2::WriteFile(char *filename)
{
GenerateRules(In_File,filename,pIS,ISTable,pDecis,Rset,Rec_Num,ConAttrNum,ConName,ConType);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?