怎样编写一个矩阵转置的函数,矩阵的行、列数在程序中由用户输入!!【紧急需要,求高手啊!】

需要原创的啊!!

原创程序,用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中啊,你的是什么问题?
我知道了,掉了一个 };你把它加在析构函数的外面,表示内的声明结束。

追问

就是有个是unexpected end of file found
另一个是:member function already defined or declared

追答

我知道了,加个 };
程序如下:
#include
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>inputrow>>inputcol;
Matrix a(inputrow,inputcol);
int i,j;
cout>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;
}

温馨提示:答案为网友推荐,仅供参考