用c++编写一个含有矩阵转置和加法运算的函数,矩阵的行数、列数有用户输入
展开全部
#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++完全可以用。
判断,释放内存这些都没写,你自己添上吧。
#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++完全可以用。
判断,释放内存这些都没写,你自己添上吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询