⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alomain.cpp

📁 模式识别经典算法
💻 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 + -