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

#include"matrix.h"#include<iostream>usingnamespacestd;voidmain(){intm,n;cout<<"Please... #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];};
展开
 我来答
Bing_loves_LT
2012-09-23 · TA获得超过194个赞
知道小有建树答主
回答量:127
采纳率:0%
帮助的人:117万
展开全部
我给你重写了下
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 有些浪费空间了
用动态分配空间是最好的
还有就是加法运算的时候,一定要检查行列是否匹配
ghj123h
2012-09-23 · TA获得超过2560个赞
知道小有建树答主
回答量:1792
采纳率:0%
帮助的人:455万
展开全部
matrix m1(m,n,a[m][n]);
==>
matrix m1(m,n,a);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式