📄 kmeans.cpp
字号:
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,SS=0,n=0;
float zx,zy,zx_l,zy_l;
float X[100][2],S[100][2];
//数据输入
verify:
printf("请输入数据的个数----个数小于100的整数!否则重新输入----:");
scanf("%d",&n);
if(n>100){
goto verify;
}
else {
printf("依次输入各数据的坐标\n");
for(i=0;i<n;i++)
{
for(j=0;j<2;j++)
{
if(j==0)
{
printf("X[%d]x=",i+1);
scanf("%f",&X[i][j]);
}
else
{
printf("X[%d]y=",i+1);
scanf("%f",&X[i][j]);
}
}
}
}
//****算法过程****
zx=zx_l=X[0][0];//初始化聚类中心
zy=zy_l=X[0][1];
//开始迭代
again: //算出数据点分类
SS=0;
for(i=0;i<n;i++)
{
S[SS][0]=X[i][0];
S[SS][1]=X[i][1];
SS++;
}
//计算聚类中心
zx=0;
zy=0;
for(i=0;i<SS;i++)
{
zx=(S[i][0]+zx);
zy=(S[i][1]+zy);
}
zx=zx/SS;
zy=zy/SS;
//判断聚类中心
if((zx!=zx_l)||(zy!=zy_l))
{
zx_l=zx;
zy_l=zy;
goto again; //判断迭代得出的聚类中心的值是否与上次相同,不同则继续迭代
}
//打印结果
printf("结果:\n");
printf("%f,%f\n ",zx,zy);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -