编程实现矩阵相加和相减 c++

crh53542012 2012-04-01 10:07:39
编程实现矩阵相加和相减。(提示:定义矩阵类,数据成员为数组,重载+,-两个运算符)
简单点就ok了。。。。。。。。。
...全文
443 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
乐天的猪 2012-04-02
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
class matrix
{
public:
matrix();
void setMatrix();
friend matrix operator + (matrix a,matrix b);
friend matrix operator - (matrix a,matrix b);
void print();
private:
int data[3][3];
};

void matrix::print ()
{
cout<<"output the matrix:"<<endl;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
cout<<endl;
}
matrix operator + (matrix a,matrix b)
{
matrix c;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
c.data [i][j]=a.data [i][j]+b.data [i][j];
return c;
}
matrix operator -(matrix a,matrix b)
{
matrix c;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
c.data [i][j]=a.data [i][j]-b.data [i][j];
return c;
}
matrix::matrix()
{
data[0][0]=0;data[0][1]=0;data[0][2]=0;
data[1][0]=0;data[1][1]=0;data[1][2]=0;
data[2][0]=0;data[2][1]=0;data[2][2]=0;
}
void matrix::setMatrix()
{
cout<<"Input 9 numbers:"<<endl;
cin>>data[0][0]>>data[0][1]>>data[0][2];
cin>>data[1][0]>>data[1][1]>>data[1][2];
cin>>data[2][0]>>data[2][1]>>data[2][2];
cout<<" The end!"<<endl;
}
int main()
{
matrix a,b,c;
a.setMatrix();
b.setMatrix();
a.print();
b.print ();
c=a+b;
c.print();
return 0;
}
一鸣惊天 2012-04-02
  • 打赏
  • 举报
回复
要不要转置、求秩、求逆的、求行列式的?
一鸣惊天 2012-04-02
  • 打赏
  • 举报
回复


#include <iostream>
class My_Matrix
{
int Rows;
int Cols;
double **matrix_num;
void del();
public:
My_Matrix(const double *_matrix,int row,int col); //从double 到 MyMatrix的构造函数
My_Matrix(const My_Matrix &);
My_Matrix & operator=(const My_Matrix &);
~My_Matrix();
My_Matrix& operator +=(const My_Matrix&);
My_Matrix& operator -=(const My_Matrix&);
friend std::ostream& operator<<(std::ostream& out,const My_Matrix& _matrix);
};
void My_Matrix::del()
{
if(matrix_num !=0)
{
for(int i=0;i<Rows;++i)
delete []matrix_num[i];
delete []matrix_num;
matrix_num=0;
}
}
My_Matrix::My_Matrix(const double *_matrix,int row,int col)
{
Rows=row;
Cols=col;
matrix_num=new double *[Rows];
for(int i=0;i<Rows;++i)
{
matrix_num[i]=new double[Cols];
for(int j=0;j<Cols;++j)
matrix_num[i][j]=_matrix[i*Cols+j];
}
}
My_Matrix::My_Matrix(const My_Matrix &_matrix)
{
Rows=_matrix.Rows;
Cols=_matrix.Cols;
matrix_num=new double*[_matrix.Rows];
for(int i=0;i<_matrix.Rows;++i)
{
matrix_num[i]=new double[_matrix.Cols];
for(int j=0;j<_matrix.Cols;++j)
matrix_num[i][j]=_matrix.matrix_num[i][j];
}
}
My_Matrix& My_Matrix::operator=(const My_Matrix& _matrix)
{
del();
Rows=_matrix.Rows;
Cols=_matrix.Cols;
matrix_num=new double*[_matrix.Rows];
for(int i=0;i<_matrix.Rows;++i)
{
matrix_num[i]=new double[_matrix.Cols];
for(int j=0;j<_matrix.Cols;++j)
matrix_num[i][j]=_matrix.matrix_num[i][j];
}
return *this;
}
My_Matrix::~My_Matrix()
{
del();
}
My_Matrix& My_Matrix::operator+=(const My_Matrix& _matrix)
{
if(Rows!=_matrix.Rows || Cols!=_matrix.Cols)
throw std::runtime_error("ERROR DATA!!");
for(int i=0;i<Rows;++i)
{
for(int j=0;j<Cols;++j)
matrix_num[i][j]+=_matrix.matrix_num[i][j];
}
return *this;
}
My_Matrix& My_Matrix::operator-=(const My_Matrix& _matrix)
{
if(Rows!=_matrix.Rows || Cols!=_matrix.Cols)
throw std::runtime_error("ERROR DATA!!");
for(int i=0;i<Rows;++i)
{
for(int j=0;j<Cols;++j)
matrix_num[i][j]-=_matrix.matrix_num[i][j];
}
return *this;
}
std::ostream& operator<<(std::ostream& out,const My_Matrix& _matrix)
{
for(int i=0;i<_matrix.Rows;++i)
{
out.setf(std::ios::left);
out.precision(6);
for(int j=0;j<_matrix.Cols;++j)
{
out.width(10);
out<<_matrix.matrix_num[i][j];
}
out<<std::endl;
}
return out;
}
My_Matrix operator+(const My_Matrix& _matrix1,const My_Matrix& _matrix2)
{
My_Matrix temp(_matrix1);
return temp+=_matrix2;
}
My_Matrix operator-(const My_Matrix& _matrix1,const My_Matrix& _matrix2)
{
My_Matrix temp(_matrix1);
return temp-=_matrix2;
}
int main()
{
double x[3][3]=
{
{1,2,3},
{2,1,1},
{2,3,1}
};
My_Matrix _matrix((double*)x,3,3);
std::cout<<_matrix<<std::endl;
My_Matrix _other(_matrix);
std::cout<<_other<<std::endl;
My_Matrix m=_other+_matrix;
std::cout<<m<<std::endl;
m=m-_other;
std::cout<<m<<std::endl;
return 0;
}


冰与火 2012-04-01
  • 打赏
  • 举报
回复
mark一下,哪天写好再来贴代码。。。。。。。。。。。。。。
征服全世界Orz 2012-04-01
  • 打赏
  • 举报
回复
原来是同学,看这吧<常用算法程序集(C++语言描述)>

64,678

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧