哪位大神能帮我看看哪里出错了
#include<iostream>#include<cmath>
const int k=7;
const int l=5;
using namespace std;
class Distance
{
private:
double D[k][l];
public:
Distance(double x[k][l]);
void C_distance(double dis[l-1][l]);
void getdistance(double dis[l-1][l]);
};
class Gdistance:public Distance
{
private:
double D[k][l];
public:
Gdistance(double x[k][l]);
void C_gdistance(double gdis[l-1][l]);
void getgdistance(double gdis[l-1][l]);
};
/*******************************************
********功能:给D[k][l]赋值
********************************************/
Distance::Distance(double x[k][l])
{
int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<l;j++)
{
D[i][j]=x[i][j];
}
}
}
/*******************************************
********功能:d[k][l]的欧式距离的计算
*******************************************/
void Distance::C_distance(double dis[l-1][l])
{
int n;
int i,j;
double s,m;
for(j=0;j<l-1;j++)
{
for(n=j+1;n<l;n++)
{
s=0;
m=0;
for(i=0;i<k;i++)
{
m=D[i][j]-D[i][n];
s+=m*m;
}
dis[j][n]=sqrt(s);
}
}
}
/*******************************************
********功能:欧式距离的输出
*******************************************/
void Distance::getdistance(double dis[l-1][l])
{
int i,j;
for (i=0;i<l-1;i++)
{
for(j=0;j<l;j++)
{
cout<<"第"<<i+1<<"列和第"<<j+1<<"列的欧氏距离:"<<dis[i][j]<<endl;
}
}
}
/*******************************************
********功能:给D[k][l]赋值
********************************************/
Gdistance::Gdistance(double x[k][l])
{
int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<l;j++)
{
D[i][j]=x[i][j];
}
}
}
/*******************************************
********功能: 求最小值m
********参数: 数组d[k][l]
********返回值:最小值m
*******************************************/
double getm(double d[k][l])
{
double m=-1;
double tmp=0;
int i,j;
int n;
for(j=0;j<l-1;j++)
{
for(n=j+1;n<l;n++)
{
for(i=0;i<k;i++)
{
tmp=d[i][j]-d[i][n];
if(tmp<0)
{
tmp=-tmp;
}
if(-1 == m)
{
m=tmp;
}
else if(tmp<m)
{
m=tmp;
}
}
}
}
return m;
}
/*******************************************
********功能: 求最大值M
********参数: 数组d[k][l]
********返回值:最大值M
*******************************************/
double getM(double d[k][l])
{
double M=-1;
double tmp=0;
int i,j;
int n;
for(j=0;j<l-1;j++)
{
for(n=j+1;n<l;n++)
{
for(i=0;i<k;i++)
{
tmp=d[i][j]-d[i][n];
if(tmp<0)
{
tmp=-tmp;
}
if(-1 == M)
{
M=tmp;
}
else if(tmp>M)
{
M=tmp;
}
}
}
}
return M;
}
/*******************************************
********功能:计算矩阵的灰色距离
*******************************************/
void Gdistance::C_gdistance(double gdis[l-1][l])
{
double getm(double d[k][l]);
double getM(double d[k][l]);
double m,M,tmp,s;
m=getm(D);
M=getM(D);
double A=m+0.5*M;
int i,j;
int n;
for(j=0;j<l-1;j++)
{
for(n=j+1;n<l;n++)
{
s=0;
gdis[j][n]=0;
for(i=0;i<k;i++)
{
tmp=D[i][j]-D[i][n];
if(tmp<0)
{
tmp=-tmp;
}
s+=A/(tmp+0.5*M);
}
gdis[j][n]=s/k;
}
}
}
/*******************************************
********功能:矩阵灰式距离的输出
*******************************************/
void Gdistance::getgdistance(double gdis[l-1][l])
{
int i,j;
for (i=0;i<l-1;i++)
{
for(j=0;j<l;j++)
{
cout<<"第"<<i+1<<"列和第"<<j+1<<"列的灰氏距离:"<<gdis[i][j]<<endl;
}
}
}
/*******************************************
********功能:键盘输入一个矩阵d[k][l]
*******************************************/
void getdouble(double d[k][l])
{
cout<<"请输入矩阵:"<<endl;
int i,j;
for (i=0;i<k;i++) //确定为第i行
{
for(j=0;j<l;j++) //输入第i行,第j列的元素
{
cin>>d[i][j];
}
}
}
int main()
{
void getdouble(double d[k][l]);
double x[k][l];
double dis[l-1][l],gdis[l-1][l];
getdouble(x);
Distance a;
a.C_distance(dis);
a.getdistance(dis);
cout<<"*********************************************"<<endl;
Gdistance b;
b.getgdistance(gdis);
b.C_gdistance(gdis);
return 0;
}