資源簡介
根據歐式距離 將隨即生成的點進行自動分類 有界面

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?“math.h“
typedef?struct?CPoint{
unsigned?int?num;
?double??x;
?double???y;
}Cpoint?;
double?Distance(?Cpoint?&Cpoint?&);
bool???Rw(CPoint?&Cpoint?&);
Cpoint?ComputeCndt(Cpoint?a[]int?n);
bool???Rw_k(Cpoint?newd[]Cpoint?oldd[]short?Numk);
void???initSumdot(short?Numk);
void???ChangeCntd(Cpoint?newd[]Cpoint?oldd[]short?Numk);
CPoint?Sumdot[30][500];
short?count[30];
CPoint?Clscntdt[30];
int?main()
{???
CPoint?Srandot[500];
Cpoint?oldd[30];
int?Rdot1Rdot2;
srand(?(unsigned)time(?NULL?)?);
short??K;
cout<<“要分幾類:(0~30)“< cin>>K;
initSumdot(K);
//初始化隨機數據
for?(int?i=0;i<500;i++)
{
Srandot[i].num=i;
Srandot[i].x=rand()%1000;//
Srandot[i].y=1000*rand()/RAND_MAX;
}
for?(i=0;i<500;i++)
{
cout< }
//初始化中心點
for(i=0;i {
Rdot1=rand()%500;
Rdot2=rand()%500;
while(Rdot1==Rdot2)
{
Rdot2=rand()%500;
}
Clscntdt[i]=Srandot[Rdot1];
oldd[i]=Srandot[Rdot2];
count[i]=0;
}
double?Dsts[30]tem=0;
int?m=0;
short?num=0;
while(Rw_k(Clscntdt?olddK))
{
int?j;
initSumdot(K);
ChangeCntd(ClscntdtolddK);
for?(i=0;i {
count[i]=0;
}
for(?j=0;j<500;j++)
{
for(int?i=0;i {
Dsts[i]=Distance(Srandot[j]oldd[i]);
}
tem=Dsts[0];
for(i=0;i {
if?(tem>=Dsts[i])
{
tem=Dsts[i];
num=i;
}
}
Sumdot[num][count[num]]=Srandot[j];
count[num]++;
}
//計算中心點
for?(?m=0;m {
Clscntdt[m].num=Sumdot[m][0].num;
for?(int?i=0;i {
Clscntdt[m].x+=Sumdot[m][i].x;
Clscntdt[m].y+=Sumdot[m][i].y;
}
if(count[m]!=0){
Clscntdt[m].x/=count[m];
Clscntdt[m].y/=count[m];}
}
}
for(i=0;i {
cout< cout< }
return?0;
}
double?Distance(?Cpoint?&aCpoint?&b)
{
return ?sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
bool?Rw(CPoint?&aCpoint?&b)
{
if(a.x!=b.x?||?a.y!=b.y?)
return?1;
else return?0;
}
bool?Rw_k(Cpoint?newd[]Cpoint?oldd[]short?Numk)
{
for?(int?i=0;i {
if?(Rw(newd[i]oldd[i]))
return?1;
else return?0;
}
}
void?ChangeCntd(Cpoint?newd[]Cpoint?oldd[]short?Numk)
{
for(int?i=0;i oldd[i]=newd[i];
}
void?initSumdot(short?Numk)
{
for?(int?i=0;i {
for?(int?j=0;j<500;j++)
{
Sumdot[i][j].x=0;
Sumdot[i][j].y=0;
}
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????245853??2010-12-18?09:55??二維聚類分析\Debug\二維類分析.exe
?????文件???????2725??2010-12-19?21:32??二維聚類分析\二維類分析.cpp
?????文件???????3451??2010-12-16?20:28??二維聚類分析\二維類分析.dsp
?????文件????????545??2010-12-16?20:28??二維聚類分析\二維類分析.dsw
?????文件??????41984??2010-12-18?09:56??二維聚類分析\二維類分析.ncb
?????文件??????48640??2010-12-18?09:56??二維聚類分析\二維類分析.opt
?????文件????????768??2010-12-18?09:55??二維聚類分析\二維類分析.plg
?????目錄??????????0??2010-12-18?18:35??二維聚類分析\Debug
?????目錄??????????0??2010-12-18?18:38??二維聚類分析
-----------?---------??----------?-----??----
???????????????343966????????????????????9
- 上一篇:計算機算法分析試卷兩套有答案
- 下一篇:統一用戶及權限管理系統需求分析
評論
共有 條評論