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

📄 zss.cpp

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

#include "stdafx.h"
#include "Zss.h"

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

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

CZss::CZss()
{
}

CZss::~CZss()
{
}

/*读取文件头的信息
---------input:文件名*/
fpos_t CZss::ReadFileHead(LPCTSTR filename,int i_stage)
{
	FILE *fp;
	fpos_t file_pos;
	char str_temp[ZSSLEN];
	int i;
	if((fp=fopen(filename,"r"))==NULL)
	{
		AfxMessageBox("open file:"+CString(filename)+" failed");
		return 0;
	}
	fscanf(fp,"Style:%s\n",m_strStyle);
	fscanf(fp,"Stage:%d\n",&m_iStage);
	if (m_iStage!=i_stage)
	  if (!((i_stage==1)&&(m_iStage==0)))
	  {  
		AfxMessageBox("文件格式错误!(Stage)");
		fclose(fp);
		return 0;
	}
	fscanf(fp,"Condition attributes number:%d\n",&m_iConAttrNum);
	fscanf(fp,"Records number:%d\n",&m_iRecordNum);
	m_AttrName.RemoveAll();
	for(i=0;i<m_iConAttrNum+1;i++)
	{
		fscanf(fp,"%s",str_temp);
		m_AttrName.Add(str_temp);
	}
	fscanf(fp,"\n");
	m_AttrType.RemoveAll();
	for(i=0;i<m_iConAttrNum+1;i++)
	{
  	fscanf(fp,"%s",str_temp);
   	if(strcmp(str_temp,"Float")&&strcmp(str_temp,"Integer")&&strcmp(str_temp,"String"))		
	{ 
		AfxMessageBox("Attribute Type is wrong");
		return 0;
	} 
	m_AttrType.Add(str_temp);
	}	
	fscanf(fp,"\n");
	fgetpos(fp,&file_pos);
	fclose(fp);
	return file_pos;
}

/*-----------写结果文件的描述信息
-----------intput: fp:文件指针
                    bfist:1表示第一次写入 在 Combinatorial Completer中用到
					i_stage:文件头中stage的值*/
void CZss::WriteFileHead(FILE *fp,int bfirst ,int i_stage)
{
	fseek(fp,0,SEEK_SET);
	fprintf(fp,"Style:train\n");
	fprintf(fp,"Stage:%d\n",i_stage);
	fprintf(fp,"Condition attributes number:%d\n",m_iConAttrNum);
	fprintf(fp,"Records number: %-10d\n",m_iRecordNum);
	if(bfirst==1)
	{
		for(int i=0;i<=m_iConAttrNum;i++)
			fprintf(fp,"%s\t",m_AttrName.GetAt(i));
		fprintf(fp,"\n");
		for(i=0;i<=m_iConAttrNum;i++)
			fprintf(fp,"%s\t",m_AttrType.GetAt(i));
		fprintf(fp,"\n");
	}
}

/*-------------移动文件指针
------------input fp:文件指针 
----------------- step:移动的步数(以字符串为单位)*/
void CZss::MoveFilePoint(FILE *fp, int step)
{
	char str[ZSSLEN];
	for(int i=0;i<step;i++)
		fscanf(fp,"%s",str);
}

/*判断一个字符串是否在一个字符串数组中
输入参数:str:字符串
----------array: 字符串数组*/
BOOL CZss::IsStringInStringArray(CString str, CStringArray &array)
{
	int size,i;
	size=array.GetSize();
	for(i=0;i<size;i++)
	{
		if (strcmp(str,array[i])==0)
			return TRUE;
	}
	return FALSE;
}



//得到字符串属性和非字符串属性的个数
void CZss::GetStrAndNonStrNum(int &i_str_Attr_Num, int &i_Nonstr_Attr_Num)
{
	i_str_Attr_Num=0;
	i_Nonstr_Attr_Num=0;
	for (int i=0; i<m_iConAttrNum; i++)
	{
		if (0==stricmp("String",m_AttrType[i]))
			i_str_Attr_Num++;
		else
			i_Nonstr_Attr_Num++;
	}

}

//把一个浮点数按照从小到大的顺序插入到一个浮点数数组中去
void CZss:: AddToArrayByOrder(float f_temp,CArray<float,float> &attr_array)
{
	int i_len=attr_array.GetSize();
	for(int i=0; i<i_len; i++)
	{
		if (f_temp==attr_array[i])
			return;
		else if(f_temp<attr_array[i])
		{
			attr_array.InsertAt(i,f_temp);
			return;
		}
	}
	attr_array.Add(f_temp);
}

⌨️ 快捷键说明

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