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

📄 getdata.c

📁 决策树是用二叉树形图来表示处理逻辑的一种工具。可以直观、清晰地表达加工的逻辑要求。特别适合于判断因素比较少、逻辑组合关系不复杂的情况。
💻 C
字号:
/*************************************************************************//*									 *//*	Get case descriptions from data file				 *//*	--------------------------------------				 *//*									 *//*************************************************************************/#include "defns.i"#include "types.i"#include "extern.i"#define Inc 2048/*************************************************************************//*									 *//*  Read raw case descriptions from file with given extension.		 *//*									 *//*  On completion, cases are stored in array Item in the form		 *//*  of Descriptions (i.e. arrays of attribute values), and		 *//*  MaxItem is set to the number of data items.				 *//*									 *//*************************************************************************/    GetData(Extension)/*  --------  */    String Extension;{    FILE *Df, *fopen();    char Fn[100];    ItemNo i=0, j, ItemSpace=0;    Description GetDescription();    /*  Open data file  */    strcpy(Fn, FileName);    strcat(Fn, Extension);    if ( ! ( Df = fopen(Fn, "r") ) ) Error(0, Fn, "");    do    {	MaxItem = i;	/*  Make sure there is room for another item  */	if ( i >= ItemSpace )	{	    if ( ItemSpace )	    {		ItemSpace += Inc;		Item = (Description *)			realloc(Item, ItemSpace*sizeof(Description));	    }	    else	    {		Item = (Description *)			malloc((ItemSpace=Inc)*sizeof(Description));	    }	}	Item[i] = GetDescription(Df);    } while ( Item[i] != Nil && ++i );    fclose(Df);    MaxItem = i - 1;}/*************************************************************************//*									 *//*  Read a raw case description from file Df.				 *//*									 *//*  For each attribute, read the attribute value from the file.		 *//*  If it is a discrete valued attribute, find the associated no.	 *//*  of this attribute value (if the value is unknown this is 0).	 *//*									 *//*  Returns the Description of the case (i.e. the array of		 *//*  attribute values).							 *//*									 *//*************************************************************************/Description GetDescription(Df)/*          ---------------  */    FILE *Df;{    Attribute Att;    char name[500], *endname, *CopyString();    Boolean ReadName();    int Dv;    float Cv;    Description Dvec;    double strtod();    if ( ReadName(Df, name) )    {	Dvec = (Description) calloc(MaxAtt+2, sizeof(AttValue));        ForEach(Att, 0, MaxAtt)        {	    if ( SpecialStatus[Att] == IGNORE )	    {		/*  Skip this value  */		DVal(Dvec, Att) = 0;	    }	    else	    if ( MaxAttVal[Att] || SpecialStatus[Att] == DISCRETE )	    {		/*  Discrete value  */ 	        if ( ! ( strcmp(name, "?") ) )		{		    Dv = 0;		}	        else	        {		    Dv = Which(name, AttValName[Att], 1, MaxAttVal[Att]);		    if ( ! Dv )		    {			if ( SpecialStatus[Att] == DISCRETE )			{			    /*  Add value to list  */			    Dv = ++MaxAttVal[Att];			    if ( Dv > (int) AttValName[Att][0] )			    {				printf("\nToo many values for %s (max %d)\n",					AttName[Att], (int) AttValName[Att][0]);				exit(1);			    }			    AttValName[Att][Dv] = CopyString(name);			}			else			{			    Error(4, AttName[Att], name);			}		    }	        }	        DVal(Dvec, Att) = Dv;	    }	    else	    {		/*  Continuous value  */	        if ( ! ( strcmp(name, "?") ) )		{		    Cv = Unknown;		}	        else		{		    Cv = strtod(name, &endname);		    if ( endname == name || *endname != '\0' )			Error(4, AttName[Att], name);		}		CVal(Dvec, Att) = Cv;	    }	    ReadName(Df, name);        }        if ( (Dv = Which(name, ClassName, 0, MaxClass)) < 0 )        {	    Error(5, "", name);	    Dv = 0;        }	Class(Dvec) = Dv;	return Dvec;    }    else    {	return Nil;    }}

⌨️ 快捷键说明

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