亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? getdata.c

?? 數(shù)據(jù)格式檢查算法
?? C
字號(hào):
/*************************************************************************
 *	Get case descriptions from data file				 
 *************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "types.h"
#include "ErrorP.h"

char    *FileName = "DF"; /* 默認(rèn)的數(shù)據(jù)文件名 */

short   ClassNum;         /* 分類數(shù)目 */
char    **ClassName;      /* 類名 */

short   AttNum;           /* 最大屬性數(shù)目 */
char    **AttName;        /* 屬性名 */
short   *AttValNum;       /* 每個(gè)屬性取值的最大個(gè)數(shù) */
char    ***AttValName;    /* 屬性值類型或名稱 - AttValName[Att][0]中存儲(chǔ)離散屬性值的最大值 */

char    *SpecialStatus;      // 特征類型:IGNORE,DISCRETE,CONTINUOUS
short   MaxDiscrValNum = 2;  // 離散特征(數(shù)值類型)和集合特征的最大取值個(gè)數(shù)

int	        ItemNum;      /* 讀取的數(shù)據(jù)條數(shù)目 */
Description	*Item;        /* 讀取的數(shù)據(jù)條內(nèi)容 */


char	Delimiter;    /* 定界符 */

///////////////////////////////////////////////////////////////////////////////////////////////////
//  功能函數(shù)
///////////////////////////////////////////////////////////////////////////////////////////////////
char *CopyString( char *x)
{
    char *s;

	s = (char *) calloc(strlen(x)+1, sizeof(char));
    if( s != NULL ) {
      //printf( "Allocated Success\n" );
	  //free( s );
	}
    else {
      printf( "Can't allocate memory\n" );
	}

    strcpy(s, x);
    return s;
}

/////////////////////////////////////////////////////////////////////
//	在 List[First] 到 List[Last] 之間定位 Val 值的位置
/////////////////////////////////////////////////////////////////////
int Which(char *Val, char *List[], short First, short Last)
{
    short n=First;

    while ( n <= Last && strcmp(Val, List[n]) ) n++;
    return ( n <= Last ? n : First-1 );
}

/////////////////////////////////////////////////////////////////////
//  Read a name from file f into string s, setting Delimiter.		 
/////////////////////////////////////////////////////////////////////
#define SkipComment  while ( ( c = getc(f) ) != '\n' )
#define Space(s)	 (s == ' ' || s == '\n' || s == '\t')
Boolean ReadName(FILE *f, char *s)
{
    register char *Sp=s;
    register int  c;

    /*  跳過空格和注釋  */
    while ( ( c = getc(f) ) == '|' || (c == ' ' || c == '\n' || c == '\t') ) {  
		if ( c == '|' ) {
		    /* 跳過注釋信息 */
			SkipComment;  
		}
	}

    /*  如果沒有屬性名返回FALSE, 定界符賦值=EOF(文件結(jié)束)  */
    if ( c == EOF ) { Delimiter = EOF;  return FALSE; }

    /**************************************************************************  
	 * 讀字符直到另一個(gè)分界符 
	 * ':'    屬性名與屬性值之間的分界符
	 * ','    屬性值與數(shù)據(jù)條值之間的分界符
	 * '\n'   行結(jié)束
	 * '|'    注釋分界符
	 * 'EOF'  文件結(jié)束分界符
	 **************************************************************************/
    while ( c != ':' && c != ',' && c != '\n' && c != '|' && c != EOF ) {
	   if ( c == '.' ) {
	        if ( ( c = getc(f) ) == '|' || (c == ' ' || c == '\n' || c == '\t') ) break;
	        *Sp++ = '.';
	   }

	   if ( c == '\\' )	{ c = getc(f); }
	   *Sp++ = c;
	   
	   /* 跳過空格 */
	   if ( c == ' ' ) {  while ( ( c = getc(f) ) == ' ' ) ;  }
	   else	{ c = getc(f); }
    }

    if ( c == '|' )  SkipComment;
    Delimiter = c;

    while ( (*(Sp-1) == ' ' || *(Sp-1) == '\n' || *(Sp-1) == '\t') ) Sp--;

    *Sp++ = '\0';
	return TRUE;
}

///////////////////////////////////////////////////////////////////////////////
//  讀取類、特征的有關(guān)信息
///////////////////////////////////////////////////////////////////////////////
void GetNames()
{
    FILE  *File_Hander;
    char  Ch_FileName[100];
	
	char  Buffer[1000];
    short v;
    int   ClassCeiling=100, AttCeiling=100, ValCeiling;

    // 打開數(shù)據(jù)屬性名文件 ///////////////////////////////////////////////////////
    strcpy(Ch_FileName, FileName);  
	strcat(Ch_FileName, ".names");
    if ( !(File_Hander=fopen(Ch_FileName, "r")) )  { Error(0, Ch_FileName, ""); }

    // 從數(shù)據(jù)屬性名文件獲取類名 /////////////////////////////////////////////////////////
	ClassName = (char **) calloc(ClassCeiling, sizeof(char *)); 
	if( ClassName != NULL ) {
        // printf( "Allocated Success\n" );
	    // free( ClassName );
	}
    else {
        printf( "Can't allocate memory on ClassName!\n" );
		exit(1);
	}

	ClassNum = -1;
	do {
	   ReadName(File_Hander, Buffer);
	   
	   if ( ++ClassNum >= ClassCeiling)	{
	      ClassCeiling += 100;
	      ClassName = (char **)  realloc(ClassName, ClassCeiling*sizeof(char *));
	      if( ClassName != NULL ) {
              // printf( "Allocated Success\n" );
	          // free( ClassName );
		  }
          else {
              printf( "Can't allocate memory on ClassName!\n" );
		      exit(1);
		  }

	   }
	
	   ClassName[ClassNum] = CopyString(Buffer);  // free(ClassName[ClassNum]);
    } while ( Delimiter == ',' );
	
    // 從數(shù)據(jù)屬性名文件獲取屬性名和屬性值 ///////////////////////////////////////////////
    AttName = (char **) calloc(AttCeiling, sizeof(char *));        
    if( AttName != NULL ) {
        // printf( "Allocated Success\n" );
        // free( AttName );
	}
    else {
        printf( "Can't allocate memory on AttName!\n" );
	    exit(1);
	}

    AttValNum = (short *) calloc(AttCeiling, sizeof(short));       
    AttValName = (char ***) calloc(AttCeiling, sizeof(char **));   
    
	SpecialStatus = (char *) malloc(AttCeiling);                   

    AttNum = -1;
    while ( ReadName(File_Hander, Buffer) ) {
	// 每個(gè)特征一個(gè)循環(huán) //////////////////////////////////////////////////
		if ( Delimiter != ':' ) { Error(1, Buffer, ""); }   // 格式定義":"

	    if ( ++AttNum >= AttCeiling ) {
			/* 如果分配記錄屬性名的空間不夠,則再分配空間 */
	        AttCeiling += 100;
	        AttName = (char **) realloc(AttName, AttCeiling*sizeof(char *));         
	        AttValNum = (short *) realloc(AttValNum, AttCeiling*sizeof(short));      
	        AttValName = (char ***) realloc(AttValName, AttCeiling*sizeof(char **)); 
	        
			SpecialStatus = (char *) realloc(SpecialStatus, AttCeiling);             
		}
        
		// 獲取特征名 ////////////////////////////////
	    AttName[AttNum] = CopyString(Buffer);
	    
		// 獲取特征值及判斷屬性的特點(diǎn) ////////////////
		SpecialStatus[AttNum] = NIL;     
		AttValNum[AttNum] = 0;     
		ValCeiling = 100;
	    AttValName[AttNum] = (char **) calloc(ValCeiling, sizeof(char *));   

	    do {
		// 每個(gè)特征取值一個(gè)循環(huán) ////////////////////////////////////////////////////
	       if ( ! ( ReadName(File_Hander, Buffer) ) ) Error(2, AttName[AttNum], "");

	       if ( ++AttValNum[AttNum] >= ValCeiling ) {
		      ValCeiling += 100;
		      AttValName[AttNum] = (char **) realloc(AttValName[AttNum], ValCeiling*sizeof(char *));
		   }

		   // 獲取特征值名稱,數(shù)組下標(biāo) AttValNum[AttNum] 從1開始 /////
	       AttValName[AttNum][AttValNum[AttNum]] = CopyString(Buffer);
		} while ( Delimiter == ',' ); 

		// 根據(jù)屬性取值個(gè)數(shù)進(jìn)行屬性類別的處理 ///////////////////////////////////////////
	    if ( AttValNum[AttNum] == 1 ) {
	       // 如果屬性只有一個(gè)取值: continous,discrete和ignore 三種類型 ///////
		   if ( ! strcmp(Buffer, "continuous") )  { 
		   // "continuous" 類型 
			   // 進(jìn)行離散處理
			   SpecialStatus[AttNum] = CONTINUOUS;
		   }
		   else if ( ! memcmp(Buffer, "discrete", 8) ) {
		   // "discrete" 類型的屬性處理 

		           SpecialStatus[AttNum] = DISCRETE;

				   v = atoi(&Buffer[8]);
		           if ( v < 2 )	{
		                printf("** %s: illegal number of discrete values\n", AttName[AttNum]);
		                exit(1);
				   }

		           AttValName[AttNum] = (char **) realloc(AttValName[AttNum], (v+2)*sizeof(char *));
		           // DISCRETE 類型的特征值數(shù)組,設(shè)置相應(yīng)離散屬性的最大取值 /////////////////////////
				   AttValName[AttNum][0] = (char *) v;

				   if ( v > MaxDiscrValNum ) MaxDiscrValNum = v;
		   }
		   else {
			   if ( ! strcmp(Buffer, "ignore") ) { 
                   /* "ignore" 類型的屬性處理 */
				   SpecialStatus[AttNum] = IGNORE; 
			   }
	           else {
		            /* 不能識(shí)別的屬性類型  */
		            Error(3, AttName[AttNum], "");
			   }
		   }

		   // IGNORE,DISCRETE,CONTINUOUS 特征取值個(gè)數(shù)設(shè)置為 0  ///////////////////
	       AttValNum[AttNum] = 0;
		}
		else {
	       // 集合特征 ///////////////////////////////////////////////////////////
		   SpecialStatus[AttNum] = SET;
		   if ( AttValNum[AttNum] > MaxDiscrValNum ) MaxDiscrValNum = AttValNum[AttNum];
		}
    
	} /* end while */

    fclose(File_Hander);
}


/////////////////////////////////////////////////////////////////////////////////////////
//  讀訓(xùn)練數(shù)據(jù)
/////////////////////////////////////////////////////////////////////////////////////////
#define ITEM2K 2048

Description GetDescription(FILE *File_Hander)
{
    short       Att;
    char        name[500], *endname;
    int         Dv;
    float       Cv;
    
	Description Dvec;

    if ( ReadName(File_Hander, name) ) {
	     // 分配存儲(chǔ)屬性值的空間 //////////////////////////////////////////////
		 Dvec = (Description) calloc(AttNum+2, sizeof(AttValue));
         if( Dvec == NULL ) { 
			 printf("Can't allocate memory on sub Item.\n" ); 
		     exit(1);
		 }

		 // 讀取各個(gè)特征的取值 ////////////////////////////////////////////////
         for (Att = 0; Att <= AttNum; ++Att ) {
			if ( SpecialStatus[Att] == IGNORE ) { 
				DVal(Dvec, Att) = 0; 
			}
			else if ( AttValNum[Att] || SpecialStatus[Att] == DISCRETE ) {
			// SET 特征 || DISCRETE 特征 /////////////////////////////////
	            if ( ! ( strcmp(name, "?") ) ) { 
					Dv = 0; 
				}
	            else {
		             /* 查找屬性取值name在屬性取值A(chǔ)ttValName[Att]中的位置 */
				     Dv = Which(name, AttValName[Att], 1, AttValNum[Att]);
		             if ( ! Dv ) {
			         // Dv=0 表示屬性出現(xiàn)新的取值 //////////////////////////
						  if ( SpecialStatus[Att] == DISCRETE )	{
			              // DISCRETE 特征
			                   Dv = ++AttValNum[Att];   /* 離散屬性取值個(gè)數(shù)加1 */
				     		   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 { 
						  // SET 的特征不允許出現(xiàn)新的取值
							   Error(4, AttName[Att], name); 
						  }
					 }
				}
	                  
				DVal(Dvec, Att) = Dv;
			}
	        else {
		    // 連續(xù)數(shù)值處理 
	            if ( ! ( strcmp(name, "?") ) ) { 
					/* 未知的連續(xù)值 */  
					Cv = Unknown;	
				}
	            else {
		             Cv = (float) strtod(name, &endname);
				     if ( endname == name || *endname != '\0' ) { 
						  Error(4, AttName[Att], name); 
					 }
				}
		              
				CVal(Dvec, Att) = Cv;
			} 

            ReadName(File_Hander, name);
		 } /* for end */

		 /* 讀取類值 */
         if ( (Dv = Which(name, ClassName, 0, ClassNum)) < 0 ) {
	          Error(5, "", name);
	          Dv = 0;
		 }
	     
		 Class(Dvec) = Dv;
		 return Dvec;   /* 讀取了一條完整的數(shù)據(jù)并返回 */
	}
    else {	
		 return NIL; 
	}
}

void GetData(char *Extension)
{
    FILE   *File_Hander;
    char   ch_FileName[100];
    
	int    Item_count, ItemSpace;

    // 打開數(shù)據(jù)文件 ////////////////////////////////////////////////////////////////
    strcpy(ch_FileName, FileName);     
	strcat(ch_FileName, Extension);
    if ( ! ( File_Hander = fopen(ch_FileName, "r") ) )   Error(0, ch_FileName, "");

	Item_count=0;	
	ItemSpace=0;
    do {
	   ItemNum = Item_count;
	   if ( Item_count >= ItemSpace ) {
	        if ( ItemSpace ) {
		         ItemSpace += ITEM2K;  /* 每次追加2k條空間 */
		         /* 追加分配空間 */
				 if( (Item = (Description *) realloc(Item, ItemSpace*sizeof(Description)) ) == NULL ) {
					 printf( "Can't realloc memory on Item\n" );
					 exit(1);
				 }
			}
	        else {
				 /* 第一次分配空間 */
				if( (Item = (Description *) malloc((ItemSpace=ITEM2K)*sizeof(Description)) ) == NULL ) {
					 printf( "Can't malloc memory on Item\n" );
					 exit(1);
				}
			}
	   }

	   Item[Item_count] = GetDescription(File_Hander);
    } while ( Item[Item_count] != NIL && ++Item_count );

    fclose(File_Hander);
    ItemNum = Item_count - 1; /* 讀取的最大數(shù)據(jù)條數(shù) */
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区视频| 国产午夜精品一区二区| 91女神在线视频| 成人黄色小视频在线观看| 国产91富婆露脸刺激对白| 国产乱人伦精品一区二区在线观看| 久久疯狂做爰流白浆xx| 激情六月婷婷久久| 国产剧情av麻豆香蕉精品| 国产成人免费在线| 成人精品小蝌蚪| 在线观看www91| 日韩欧美国产一区二区在线播放| 日韩欧美高清在线| 一卡二卡三卡日韩欧美| 国产日韩高清在线| 国产精品免费免费| 亚洲免费视频中文字幕| 亚洲色图20p| 婷婷综合另类小说色区| 麻豆91小视频| 国产成人精品午夜视频免费| 高清beeg欧美| 欧美三区免费完整视频在线观看| 欧美日韩国产一级| 久久久美女毛片| 自拍偷在线精品自拍偷无码专区| 午夜欧美一区二区三区在线播放| 免费高清成人在线| 99精品欧美一区| 欧美一区二区不卡视频| 中文一区在线播放| 日韩高清不卡一区二区| 国产成人午夜99999| 色av成人天堂桃色av| 精品日韩欧美在线| 亚洲免费观看高清完整版在线观看| 天天综合日日夜夜精品| 成人久久视频在线观看| 欧美一区二区三区公司| 亚洲欧洲日韩综合一区二区| 天堂午夜影视日韩欧美一区二区| 丁香网亚洲国际| 欧美一区二区三区四区视频| 亚洲美女在线国产| 国产精品一二一区| 在线综合视频播放| 亚洲少妇中出一区| 国产精品小仙女| 7777女厕盗摄久久久| 亚洲视频1区2区| 国产成人在线观看| 欧美sm美女调教| 亚洲va国产天堂va久久en| av网站一区二区三区| 久久婷婷国产综合国色天香| 午夜a成v人精品| 欧美在线影院一区二区| 中文字幕在线不卡国产视频| 国产在线不卡视频| 欧美成人乱码一区二区三区| 亚洲电影你懂得| 色哟哟国产精品| 亚洲精品视频在线观看免费 | 337p亚洲精品色噜噜| 亚洲精品成人精品456| 成人激情黄色小说| 国产亚洲精品超碰| 国产毛片一区二区| 国产日韩精品一区二区三区 | 激情六月婷婷久久| 欧美一区二区性放荡片| 日韩国产精品久久久| 欧美日韩第一区日日骚| 亚洲成人自拍网| 91精品久久久久久久99蜜桃| 日日夜夜免费精品视频| 7777精品伊人久久久大香线蕉超级流畅| 亚洲精品视频免费看| 色婷婷亚洲一区二区三区| 一区二区三区四区在线| 色欧美片视频在线观看| 亚洲免费在线视频一区 二区| 91免费视频网| 亚洲成人1区2区| 日韩一区二区中文字幕| 国产一区二区0| 亚洲国产成人一区二区三区| av成人动漫在线观看| 亚洲视频免费在线| 欧美亚洲高清一区| 日韩在线卡一卡二| 国产亚洲欧美激情| 99久久精品免费精品国产| 亚洲成人资源网| 精品久久久久久久久久久久包黑料 | 欧美性受极品xxxx喷水| 亚洲成人自拍网| 2020日本不卡一区二区视频| 国产在线精品免费av| 国产精品国产三级国产aⅴ入口 | 欧美电影一区二区三区| 国内精品国产成人国产三级粉色 | 91在线观看下载| 亚洲国产欧美日韩另类综合| 日韩欧美国产一二三区| 99久免费精品视频在线观看 | 国产精品久久精品日日| 日本精品一区二区三区高清 | 波多野结衣精品在线| 亚洲国产乱码最新视频| 久久久久99精品国产片| 在线视频欧美区| 国产精品综合av一区二区国产馆| 亚洲精品国产第一综合99久久| 91精品一区二区三区久久久久久 | 日韩亚洲欧美高清| 91视视频在线直接观看在线看网页在线看| 亚洲第一av色| 1000部国产精品成人观看| 欧美大尺度电影在线| 91视频在线观看| 高清shemale亚洲人妖| 美国精品在线观看| 亚洲国产综合91精品麻豆| 国产日韩成人精品| 精品不卡在线视频| 91精品在线观看入口| 欧美综合欧美视频| 成人黄色av网站在线| 精品一区二区三区不卡 | 国产乱码精品1区2区3区| 日韩经典一区二区| 亚洲成人动漫在线免费观看| 欧美激情一区二区三区全黄| 日韩亚洲欧美成人一区| 欧美三级韩国三级日本一级| 色婷婷狠狠综合| 91在线丨porny丨国产| 国产98色在线|日韩| 国产一区二区三区在线观看免费| 蜜臀久久99精品久久久久宅男 | jiyouzz国产精品久久| 精品亚洲成a人在线观看| 丝瓜av网站精品一区二区 | 国产盗摄一区二区| 国产毛片精品一区| 国产一区二区三区四| 国产真实乱子伦精品视频| 久久草av在线| 国产主播一区二区| 国产精品一二三区在线| 国产成人在线视频网址| 国产成人综合在线播放| 国产不卡视频一区| 成人综合婷婷国产精品久久| 国产成人8x视频一区二区| 成人一区二区三区视频在线观看| 国产精品一区二区久久不卡 | 亚洲欧美日韩人成在线播放| 中文字幕av一区 二区| 亚洲色欲色欲www| 一区二区三区国产精品| 亚洲成人免费视| 日日骚欧美日韩| 麻豆国产精品一区二区三区| 国产综合色精品一区二区三区| 韩国av一区二区三区在线观看| 国产真实乱对白精彩久久| 国产精品12区| 成人污污视频在线观看| 欧美在线免费播放| 欧美一区二区日韩| 精品处破学生在线二十三| 亚洲国产精品99久久久久久久久 | www.亚洲在线| 欧美午夜一区二区| 欧美va亚洲va在线观看蝴蝶网| 国产精品久久久久久久浪潮网站| 亚洲免费观看高清完整版在线观看熊| 亚洲综合色噜噜狠狠| 日本成人在线视频网站| 成人性生交大合| 欧美系列在线观看| 精品日韩99亚洲| 最新国产の精品合集bt伙计| 日本一不卡视频| www..com久久爱| 91精品国产91久久久久久最新毛片| 久久精品视频一区二区| 亚洲伦理在线精品| 国产呦萝稀缺另类资源| 色网综合在线观看| 国产三级一区二区三区| 亚洲一区二区欧美日韩| 国产精品一区二区在线看| 欧美三区免费完整视频在线观看| 国产午夜精品在线观看| 丝袜美腿亚洲一区二区图片| 成人黄页在线观看|