有人能把这个C程序翻译成VB么
如题,因为VB我也就是看的懂一些什么仓库管理系统的设计代码,对于算法看的我有点晕
是要分析10个样本,每个样本有两个特征值,然后对10个样本进行谱系聚类分析
#include "stdafx.h"
#include<iostream>
#include<math.h>
using namespace std;
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
double T;//阈值
int size;
//样本结构体
struct sample{
int feature1,feature2;//分别是特征和特征
};
//欧氏距离
double Euclidean(sample a,sample b)
{
int minus[3];
double result;
minus[1] = a.feature1- b.feature1;
minus[2] = a.feature2 - b.feature2;
result = minus[1]*minus[1] + minus[2]*minus[2];
result = sqrt((double)result);
return result;
double nearestDistance(sample sam[],int a[],int b[])
{
int i,j;
bool haveCompared=false;
double min;
for(i=1;i<a[0]+1;i++)
{
for(j=1;j<b[0]+1;j++)
{
double temp=Euclidean(sam[a[i]],sam[b[j]]);
if(haveCompared==false)
{
min = temp;
}
else if(temp<min) min=temp;
}
}
return min;
}
//谱系聚类主要函数
void hierarchicalClustering(sample sam[])
{
int n=size-1;//类的个数
//group能够存放类的信息的二维数组,group[][0]为该类样本个数
int **group = new int*[size];
for(int i=0;i<size;i++)group[i]=new int[size];
group[0][0]=0;
for(int i=1;i<size;i++)//数组初始化,每个样本自成一类
{
group[0][i]=0;group[i][0]=1;group[i][1]=i;
}
//逐次聚类直到最终聚成两个类
for(int k=1;k<size-2;k++)
{
double distance;int count=0;
int N;//矩阵的长度
N=n*(n-1)/2;
//申明一个存放类间距离的矩阵
double *matrixD = new double[N+1];int **matrix = new int*[N+1];
for(int i=0;i<N+1;i++)matrix[i]=new int[2];
for(int i=1;i<size-1;i++)//将类间距离存入矩阵中
{
if(group[i][0]>0)
{
for(int j=i+1;j<size;j++)
{
if(group[j][0]>0)
{
distance = nearestDistance(sam,group[i],group[j]);
matrix[count][0]=i;matrix[count][1]=j;matrixD[count]=distance;
count++;
}
}
}
}
//找到最小距离的两个类
double minD;int minI=0,minJ=0;//I,J最小距离的两个类
count=0;
for(count=0;count<N;count++)
{
if(count==0)
{
minD=matrixD[count];
minI=matrix[count][0];minJ=matrix[count][1];
}
else if(minD>matrixD[count])
{
minD=matrixD[count];
minI=matrix[count][0];minJ=matrix[count][1];
}
}
//合并最小距离的两个类
for(int i=1;i<group[minJ][0]+1;i++)
{
group[minI][group[minI][0]+i]=group[minJ][i];
}
group[minI][0]+=group[minJ][0];
group[minJ][0]=0;
n--;
}
//输出谱系聚类算法结果
cout<<"谱系聚类算法的最终类结果是:"<<endl;
for(int i=1;i<size;i++)
{
if(group[i][0]>0)
{
cout<<"一类是:";
for(int j=1;j<group[i][0]+1;j++)
{
cout<<"样本"<<group[i][j]<<"("<<sam[group[i][j]].feature1<<
","<<sam[group[i][j]].feature2<<"); ";
}
cout<<endl;
}
}
因为我这个是基于EXCEL里的,也就是翻译出来放在excel的VB编辑器能用什么的,跪求~~