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

📄 zssmanualscaler.cpp

📁 某个实验事编写粗糙集智能信息处理的程序
💻 CPP
字号:
// ZssManualScaler.cpp: implementation of the CZssManualScaler class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ZssManualScaler.h"
#include "../SetBreakPointDlg2.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CZssManualScaler::CZssManualScaler()
{

}

CZssManualScaler::~CZssManualScaler()
{

}

//手工指定断点的离散化算法
BOOL CZssManualScaler::MannualScaler(CString str_s_file, CString str_d_file)
{
	fpos_t file_pos;
	FILE *file_s,*file_d;
	if ((file_pos=ReadFileHead((LPCTSTR)(str_s_file),1))==0)//读取文件头
		return FALSE;//失败返回
	if ((file_s=fopen(str_s_file,"r"))==NULL)//打开文件
		return FALSE;
	if ((file_d=fopen((LPCTSTR)(str_d_file),"w"))==NULL)//打开文件
	{
		return FALSE;
	}	
	//得到字符串属性和非字符串属性的个数
	int i_str_Attr_Num,i_Nonstr_Attr_Num;
	GetStrAndNonStrNum(i_str_Attr_Num, i_Nonstr_Attr_Num);

	CStringArray *p_str_Attr=NULL;//保存字符串条件属性的断点信息
	if ((p_str_Attr=new CStringArray[i_str_Attr_Num+1])==NULL)
		return FALSE;	
	CArray<float, float> *p_nonstr_Attr=NULL;//保存非字符串条件属性的断点信息
	if ((p_nonstr_Attr=new CArray<float,float>[i_Nonstr_Attr_Num+1])==NULL)
	{
		AfxMessageBox("分配内存出现错误");
		delete []p_str_Attr;
		return FALSE;
	}

	//手工指定非字符串属性的断点值
	CStringArray str_array;
	GetNonStrArray(str_array);//得到非字符串属性的名字
	CSetBreakPointDlg dlg(p_nonstr_Attr,i_Nonstr_Attr_Num,str_array,this);
	if (dlg.DoModal()!=IDOK)
	{
		delete []p_str_Attr;
		delete []p_nonstr_Attr;
		return FALSE;
	}
	//出来字符串属性
	int i_Str_Attr_Index=0;
	for (int i=0; i<m_iConAttrNum; i++)
	{
		if (0==stricmp(m_AttrType[i], "String"))
		{//对字符串属性的处理
			GetBreakPoint_InStrAttr(file_s, i, p_str_Attr[i_Str_Attr_Index], file_pos);
			i_Str_Attr_Index++;
		}
	}
	WriteFileHead(file_d,1,2);//写文件头
	//p_nonstr_Attr保存非字符串条件属性的断点信息
	WriteResult(file_d, file_s, file_pos, p_nonstr_Attr, p_str_Attr);
	WriteFileTail(file_d,p_nonstr_Attr,p_str_Attr);//写入断点信息
	if (p_str_Attr!=NULL)
		delete []p_str_Attr;
	if (p_nonstr_Attr!=NULL)
		delete []p_nonstr_Attr;
	fclose(file_s);
	fclose(file_d);
	return TRUE;
}

void CZssManualScaler::GetNonStrArray(CStringArray &str_array)
{
	str_array.RemoveAll();
	for (int i=0;i<m_iConAttrNum;i++)
	{
		if(stricmp(m_AttrType[i],"String")!=0)
		{
			str_array.Add(m_AttrName[i]);
		}
	}
}

⌨️ 快捷键说明

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