原创程序,用C++语言编写:
#include <iostream.h>
class Matrix
{
private:
int row,colomn;
public:
double **matrix;
static Matrix transpos(const Matrix&);
Matrix(int Mrow,int Mcol)
{
row=Mrow;
colomn=Mcol;
matrix=new double* [row];
for(int i=0;i<row;i++)
{
matrix[i]=new double[colomn];
}
/*................................................
动态分配数组,并初始化为0;
...................................................*/
for(i=0;i<row;i++)
{
for(int j=0;j<colomn;j++)
{
matrix[i][j]=0;
}
}
}
Matrix(const Matrix& a)
{
row=a.row;
colomn=a.colomn;
matrix=new double* [row];
for(int i=0;i<row;i++)
{
matrix[i]=new double[colomn];
}
/**********************************/
/*初始化为a.matrix*/
/**********************************/
for(i=0;i<row;i++)
{
for(int j=0;j<colomn;j++)
{
matrix[i][j]=a.matrix[i][j];
}
}
}
~Matrix()
{
for(int i=0;i<row;i++)
{
delete[] matrix[i];
}
delete[] matrix;
}
Matrix Matrix::transpos(const Matrix& m1) //在类的外部定义static的函数就不需要指定static
{
Matrix temp(m1);
for(int i=0;i<m1.colomn;i++)
{
for(int j=0;j<m1.row;j++)
{
temp.matrix[i][j]=m1.matrix[j][i];
}
}
return temp;
}
void main()
{ cout<<"请输入矩阵的行列数:"<<endl;
int inputrow,inputcol;
cin>>inputrow>>inputcol;
Matrix a(inputrow,inputcol);
int i,j;
cout<<"请输入a矩阵的值"<<endl;
for(i=0;i<inputrow;i++)
for(j=0;j<inputcol;j++)
cin>>a.matrix[i][j];
Matrix c(inputrow,inputcol);
c=Matrix::transpos(a);
cout<<"c矩阵为:"<<endl;
for(i=0;i<inputrow;i++)
for(j=0;j<inputcol;j++)
cout<<c.matrix[i][j]<<endl;
}
你这个是在哪里运行的???我的是vc6的!
哦,是在VC 6.0中啊,你的是什么问题?
我知道了,掉了一个 };你把它加在析构函数的外面,表示内的声明结束。