求高手解答C++两矩阵相加问题,谢谢!!!!

2024-12-04 12:45:56
推荐回答(2个)
回答1:

我给你重写了下
Matrix.h

#ifndef MATRIX_H#define MATRIX_H
const int N=100;
class Matrix
{
public:
Matrix(int Row,int Column,int A[N][N]);
Matrix(Matrix &m);
~Matrix(){};
void plus(Matrix &m);
private:
int m_Row;
int m_Column;
int m_A[N][N];
};

#endif

Matrix.cpp
#include "matrix.h" #include
using namespace std;
Matrix::Matrix(int Row,int Column,int A[N][N])
{
m_Row=Row;
m_Column=Column;
for (int i=0;i {
for (int j=0;j {
m_A[i][j]=A[i][j];
}
}
}

Matrix::Matrix(Matrix &m)
{
m_Row=m.m_Row;
m_Column=m.m_Column;
for (int i=0;i {
for (int j=0;j {
m_A[i][j]=m.m_A[i][j];
}
}
}

void Matrix::plus(Matrix &m)
{
for(int i=0;i { for(int j=0;j {
m_A[i][j] += m.m_A[i][j];
}
}
for(int i=0;i {
for(int j=0;j {
cout< }
}
}

main.cpp

#include "Matrix.h" #include
using namespace std;
int main()
{
int m,n;
cout<<"Please enter two integer number:";
cin>>m>>n;
int a[N][N];
cout<<"Please enter a "< for(int i=0;i {
for(int j=0;j {
cin>>a[i][j];
}
}
Matrix m1(m,n,a);
int b[N][N];
cout<<"Please enter a "< for(int i=0;i {
for(int j=0;j {
cin>>b[i][j];
}
}
Matrix m2(m,n,a);
m1.plus(m2);
return 0;
}

既然你已经定义了二维数组a[N][N]
构造函数的第三个参数是二维数组
那么你调用的时候直接Matrix m(m,n,a)就可以了

实际上 你的你预先指定一个N 有些浪费空间了
用动态分配空间是最好的
还有就是加法运算的时候,一定要检查行列是否匹配

回答2:

matrix m1(m,n,a[m][n]);
==>
matrix m1(m,n,a);