怎样编写一个矩阵转置的函数,矩阵的行、列数在程序中由用户输入!【紧急需要,】
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 00:33:59
怎样编写一个矩阵转置的函数,矩阵的行、列数在程序中由用户输入!【紧急需要,】
怎样编写一个矩阵转置的函数,矩阵的行、列数在程序中由用户输入!【紧急需要,】
怎样编写一个矩阵转置的函数,矩阵的行、列数在程序中由用户输入!【紧急需要,】
用C++语言编写:
#include <iostream.h>
class Matrix
{
private:
\x05int row,colomn;
public:
\x05double **matrix;
static Matrix transpos(const Matrix&);
\x05Matrix(int Mrow,int Mcol)
\x05{
\x05\x05row=Mrow;
\x05\x05colomn=Mcol;
\x05\x05matrix=new double* [row];
\x05\x05for(int i=0;i<row;i++)
\x05\x05{
\x05\x05\x05matrix[i]=new double[colomn];
\x05\x05}
\x05\x05/*.
动态分配数组,并初始化为0;
.*/
\x05\x05for(i=0;i<row;i++)
\x05\x05{
\x05\x05\x05for(int j=0;j<colomn;j++)
\x05\x05\x05{
\x05\x05\x05\x05matrix[i][j]=0;
\x05\x05\x05}
\x05\x05}
\x05}
\x05Matrix(const Matrix& a)
\x05{
\x05\x05row=a.row;
\x05\x05colomn=a.colomn;
\x05\x05matrix=new double* [row];
\x05\x05for(int i=0;i<row;i++)
\x05\x05{
\x05\x05\x05matrix[i]=new double[colomn];
\x05\x05}
\x05\x05//
\x05\x05for(i=0;i<row;i++)
\x05\x05{
\x05\x05\x05for(int j=0;j<colomn;j++)
\x05\x05\x05{
\x05\x05\x05\x05matrix[i][j]=a.matrix[i][j];
\x05\x05\x05}
\x05\x05}
\x05}
\x05~Matrix()
\x05{
\x05\x05for(int i=0;i<row;i++)
\x05\x05{
\x05\x05\x05delete[] matrix[i];
\x05\x05}
\x05\x05delete[] matrix;
\x05}
Matrix Matrix::transpos(const Matrix& m1) //在类的外部定义static的函数就不需要指定static
{
\x05Matrix temp(m1);
\x05for(int i=0;i<m1.colomn;i++)
\x05{
\x05\x05for(int j=0;j<m1.row;j++)
\x05\x05{
\x05\x05\x05temp.matrix[i][j]=m1.matrix[j][i];
\x05\x05}
\x05}
\x05return temp;
}
void main()
{\x05cout<<"请输入矩阵的行列数:"<<endl;
\x05int inputrow,inputcol;
\x05cin>>inputrow>>inputcol;
\x05Matrix a(inputrow,inputcol);
\x05int i,j;
\x05cout<<"请输入a矩阵的值"<<endl;
\x05for(i=0;i<inputrow;i++)
\x05\x05for(j=0;j<inputcol;j++)
\x05\x05\x05cin>>a.matrix[i][j];
\x05Matrix c(inputrow,inputcol);
\x05c=Matrix::transpos(a);
\x05cout<<"c矩阵为:"<<endl;
\x05for(i=0;i<inputrow;i++)
\x05\x05for(j=0;j<inputcol;j++)
\x05\x05\x05cout<<c.matrix[i][j]<<endl;
}