用c++编写一个含有矩阵转置和加法运算的函数,矩阵的行数、列数有用户输入

如题所述

第1个回答  2011-05-29
#include <stdio.h>
#include <malloc.h>

bool trans(int **,int ***,int m,int n); //矩阵转置 ,第一个参数为转置前矩阵 第二个参数保存了转置后的矩阵 m n行列
bool add(int **,int **,int ***,int m,int n); //矩阵加法 确保2个矩阵行列相等。。第一二个参数为2个相加的矩阵 结果保存在第三个参数
void show(int **,int m,int n); //遍历

int main()
{
int **pMatrix,**pArray,**pResult;
int m,n,i,j;

puts("输入行和列");
scanf("%d%d",&m,&n);

pMatrix=(int**)malloc(sizeof(int)*m);

for (i=0;i<m;i++)
{
pMatrix[i]=(int *)malloc(sizeof(int)*n);
for (j=0;j<n;j++)
{
printf("a[%d][%d]的值 ",i,j);
scanf("%d",&pMatrix[i][j]);
}
printf("\n");
}
trans(pMatrix,&pArray,m,n);

add(pMatrix,pMatrix,&pResult,m,n);

show(pResult,m,n);

return 0;

}

bool trans(int **pMatrix,int ***pArray,int m,int n)
{
int i,j;
(*pArray)=(int**)malloc(sizeof(int)*n);
for (i=0;i<n;i++)
{
(*pArray)[i]=(int *)malloc(sizeof(int)*m);
for (j=0;j<m;j++)
{
(*pArray)[i][j]=pMatrix[j][i];

}
}
return true;
}
void show(int **pMatrix,int m,int n)
{
int i,j;
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
printf("%d ",pMatrix[i][j]);
}
printf("\n");
}
}

bool add(int **pMatrix,int **pArray,int ***pResult,int m,int n)
{
int i,j;
(*pResult)=(int**)malloc(sizeof(int)*n);
for (i=0;i<m;i++)
{
(*pResult)[i]=(int *)malloc(sizeof(int)*m);
for (j=0;j<n;j++)
{

(*pResult)[i][j]=pMatrix[i][j]+pArray[i][j];
}
}
return true;
}

C的。C++完全可以用。
判断,释放内存这些都没写,你自己添上吧。
相似回答