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

#include "matrix.h"
#include<iostream>
using namespace std;
void main()
{ int m,n; cout<<"Please enter two integer number:";
cin>>m>>n;
int a[N][N];
cout<<"Please enter a "<<m<<" rows and "<<n<<" columns matrix:";
for(int i=0;i<m;i++)
{ for(int j=0;j<n;j++)
{ cin>>a[i][j]; }
}
matrix m1(m,n,a[m][n]);//为什么老是提示m处有错误,没有与之匹配的构造函数,可是我写有带三个的参数的构造函数啊。。。。
int b[N][N];
cout<<"Please enter a "<<m<<" rows and "<<n<<" columns matrix:";
for(int i=0;i<m;i++) {
for(int j=0;j<n;j++)
{ cin>>b[i][j]; } }
matrix m2(m,n,a[m][n]);
void plus(matrix m2);

#include "matrix.h"
#include <iostream>using namespace std;
matrix::matrix(int Row,int Column,int A[N][N])
{ row=Row; column=Column; a[N][N]=A[N][N];}
matrix::matrix(matrix &m){ row=m.row; column=m.column; a[N][N]=m.a[N][N];}
//matrix::~matrix(void)//{//}

void matrix::plus(matrix &m)
{
for(int i=0;i<row;i++)
{ for(int j=0;j<column;j++)
{ a[i][j]=a[i][j]+m.a[i][j]; }
}
for(int i=0;i<row;i++)
{ for(int j=0;j<column;j++)
{ cout<<a[i][j]; } } }

#pragma once
const int N=100;
class matrix
{public:
matrix(int Row,int Column,int A[N][N]);
matrix(matrix &m); ~matrix(void){};
void plus(matrix &m);
private:
int row,column,a[N][N];};

我给你重写了下
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 <iostream>
using namespace std;
Matrix::Matrix(int Row,int Column,int A[N][N])
{
m_Row=Row;
m_Column=Column;
for (int i=0;i<m_Row;++i)
{
for (int j=0;j<m_Column;++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<N;++i)
{
for (int j=0;j<N;++j)
{
m_A[i][j]=m.m_A[i][j];
}
}
}

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

main.cpp

#include "Matrix.h" #include <iostream>
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 "<<m<<" rows and "<<n<<" columns matrix:";
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cin>>a[i][j];
}
}
Matrix m1(m,n,a);
int b[N][N];
cout<<"Please enter a "<<m<<" rows and "<<n<<" columns matrix:";
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cin>>b[i][j];
}
}
Matrix m2(m,n,a);
m1.plus(m2);
return 0;
}

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

实际上 你的你预先指定一个N 有些浪费空间了
用动态分配空间是最好的
还有就是加法运算的时候,一定要检查行列是否匹配
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-23
matrix m1(m,n,a[m][n]);
==>
matrix m1(m,n,a);
相似回答