📄 alomain.cpp
字号:
#include<iostream>
#include<cmath>
#include"Alo1.h"
using std::cin;
using std::cout;
using std::endl;
int main()
{
int N = 0;
int i = 0,j = 0;
cout <<"请输待分析的样本点的数目(N):";
cin >> N;
cout <<"请依次输入所有的样本点的坐标:" << endl;
for(int i1 = 1; i1 <= N;i1++)
{
cin >> pt[i1].x >> pt[i1].y;
pt[i1].flag = 0;
}
int m;
label1: //第一步
Init(K,num_N,Aver_S,Distance,L,I,Nc);
label2: //第二步
Distribute(N);
Average(N,Nc);
//第七步
if(count == I)
{
Distance = 0;
//跳转到11步
goto label4;
}
else if(Nc <= K / 2)
{
//跳转到第8步
goto label3;
}
else if((count % 2 == 0) || (Nc >= 2 * K))
{
//跳转到11步
goto label4;
}
else
{
//跳转到第8步
goto label3;
}
label3: //第八步
Split(N,Nc);
for(m = 1; m <= Nc;m++)
{
if((Meen_Max[m] > Aver_S) &&
(((M[m] > Rec[0]) && ((2*num_N + 2) > Dismense(m,N)))|| (Nc <= K/2)))
{
Nc++;
Kr[m].x += 0.5 * Meen_Max[m];
Kr[m].y = Kr[m].y;
Kr[m].flag = m;
Kr[Nc].x = Kr[m].x - 2 * 0.5 * Meen_Max[m];
Kr[Nc].y = Kr[m].y;
Kr[Nc].flag = Nc;
//测试语句
cout <<"分裂后的聚类中心: "<< endl;
cout << Kr[m].x << " , " << Kr[m].y << endl;
cout << Kr[Nc].x<< " , " << Kr[Nc].y << endl;
//
++count;
goto label2;
}
}
label4: //第十一步
//合并函数
Incorporate(Nc,N);
if(count == I)
{}
else
{
cout << "是否需要重新设置参数(Yy|Nn): ";
char ch;
cin >> ch;
if(ch == 'Y' || ch == 'y')
{
count ++;
goto label1;
}
else if(ch == 'N' || ch == 'n')
{
count ++;
goto label2;
}
else
{
cout <<"输入的参数有误,是否要重新输入?";
// cin >> ch;
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -