char *f2a(double x, int width)
{
char cbuf[255];
char *cp;
int i,k;
int d,s;
cp=fcvt(x,width,&d,&s);
if (s)
{
strcpy(cbuf,"-");
}
else
{
strcpy(cbuf," ");
}
if (d>0)
{
for (i=0; i<d; i++)
{
cbuf[i+1]=cp[i];
}
cbuf[d+1]=0;
cp+=d;
strcat(cbuf,".");
strcat(cbuf,cp);
}
else
{
if (d==0)
{
strcat(cbuf,".");
strcat(cbuf,cp);
}
else
{
k=-d;
strcat(cbuf,".");
for (i=0; i<k; i++)
{
strcat(cbuf,"0");
}
strcat(cbuf,cp);
}
}
cp=&cbuf[0];
return cp;
}
struct aCluster
{
double Center[MAXVECTDIM];
int Member[MAXPATTERN];
int NumMembers;
};
struct aVector
{
double Center[MAXVECTDIM];
int Size;
};
class System
{
private:
double Pattern[MAXPATTERN][MAXVECTDIM+1];
aCluster Cluster[MAXCLUSTER];
FILE *OutFile; //存放结果文件
int NumPatterns; // 点(向量)的个数
int NumClusters; // 簇的个数
void DistributeSamples();
int CalcNewClustCenters();
double EucNorm(int, int); //计算E准则
int FindClosestCluster(int);