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

 我来答
百度网友c02d6baa99
2011-05-29 · TA获得超过232个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:199万
展开全部
#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++完全可以用。
判断,释放内存这些都没写,你自己添上吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式