📄 k_average.cpp
字号:
#include <iostream>
using namespace std;
#include <cmath>
#define num 20
class Point
{
public:
float x;
float y;
int z;
};
void main()
{
Point point[num];
Point z1,z2,z3,z4;
int num1,num2;
cout<<"请输入"<<num<<"个点"<<endl;
for(int i=0;i<num;i++)
{
cin>>point[i].x;
cin>>point[i].y;
}
z1.x=point[0].x;
z1.y=point[0].y;
z2.x=point[1].x;
z2.y=point[1].y;
z3.x=z3.y=z4.x=z4.y=0;
bool jump;
do
{
num1=num2=0;
for(i=0;i<num;i++)
{
if(((point[i].x-z1.x)*(point[i].x-z1.x))<((point[i].x-z2.x)*(point[i].x-z2.x)))
point[i].z=1;
else
point[i].z=2;
}
for(i=0;i<num;i++)
{
if(point[i].z==1)
{
z3.x+=point[i].x;
z3.y+=point[i].y;
num1++;
}
else if(point[i].z==2)
{
z4.x+=point[i].x;
z4.y+=point[i].y;
num2++;
}
}
z3.x=z3.x/num1;
z3.y=z3.y/num1;
z4.x=z4.x/num2;
z4.y=z4.x/num2;
jump=((z1.x!=z3.x)||(z1.y!=z3.y)||(z2.x!=z4.x)||(z2.y!=z4.y));
z1.x=z3.x;
z1.y=z3.y;
z2.x=z4.x;
z2.y=z4.y;
}while(jump);
cout<<"以下为一类:"<<endl;
for(i=0;i<num;i++)
{
if(point[i].z==1)
cout<<"样本"<<i+1<<"\t";
}
cout<<endl<<"以下为一类:"<<endl;
for(i=0;i<num;i++)
{
if(point[i].z==2)
cout<<"样本"<<i+1<<"\t";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -