📄 zss.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 + -