📄 b_8_1.cpp
字号:
#include "stdafx.h"
#include <iostream>
#include <string>
#include<iomanip>
using namespace std;
class matrix {
private:
short rows,cols; //矩阵的行、列
double *elems; //存放矩阵中各元素,按行存放
public:
matrix(){}
matrix(short r,short c)
{ rows=r;
cols=c;
elems=new double[r*c];
}
void setelem();// 给矩阵的所有元素赋值
double& operator ()(short r,short c); //重载运算符"()",读写指定位置的元素
friend matrix operator +(matrix p,matrix q); //重载"+",实现矩阵相加
friend matrix operator -(matrix p,matrix q); //重载"-",实现矩阵相减
friend matrix operator *(matrix p,matrix q); //重载"*",实现矩阵相乘
friend ostream& operator <<(ostream&out,matrix &m); //重载"<<",实现矩阵输出
};
//void matrix::setelem(short r,short c,double v)
void matrix::setelem()
{ cout << "请逐行输入矩阵的元素:";
for(int r=1;r<=rows;r++)
{ for(int c=1;c<=cols;c++)
cin>> elems[(r-1)*cols+(c-1)];
}
}
double& matrix::operator()(short r,short c)
{ if (r>=1 && r<=rows && c>=1 && c<=cols)
return elems[(r-1)*cols+(c-1)];
}
matrix operator +(matrix p,matrix q)
{
matrix m(p.rows,p.cols);
if(p.rows!=q.rows || p.cols!=q.cols)
return m;
for(int r=1;r<=p.rows;r++)
for(int c=1;c<=p.cols;++c)
m(r,c) = p(r,c)+q(r,c);
return m;
}
matrix operator -(matrix p,matrix q)
{
matrix m(p.rows,p.cols);
if(p.rows!=q.rows || p.cols!=q.cols)
return m;
for(int r=1;r<=p.rows;r++)
for(int c=1;c<=p.cols;c++)
m(r,c) = p(r,c)-q(r,c);
return m;
}
matrix operator *(matrix p,matrix q)
{
matrix m(p.rows,q.cols);
if(p.cols!=q.rows)
return m;
for(int r=1;r<=p.rows;r++)
for(int c=1;c<=q.cols;c++)
{ m(r,c) = 0.0;
for(int i=1;i<=p.cols;i++)
m(r,c) = m(r,c)+p(r,i)*q(i,c);
}
return m;
}
ostream& operator <<(ostream&out,matrix &m)
{
for(int r=1;r<=m.rows;r++)
{ for(int c=1;c<=m.cols;c++)
cout<<setw(9)<<m(r,c);
cout<<endl;
}
return out;
}
void main()
{
matrix a(2,3),b(2,3),c(3,2),d(2,3),e(2,2);
a.setelem();
b.setelem();
c.setelem();
cout<<"A矩阵:"<<endl<< a;
cout<<"B矩阵:"<<endl<< b;
cout<<"C矩阵:"<<endl<< c;
d=a+b;
cout<<"A+B矩阵:"<<endl<<d;
d=a-b;
cout<<"A-B矩阵:"<<endl<<d;
e=a*c;
cout<<"A*C矩阵:"<<endl<<e;
cin.get(); //等待结束,以便调测程序,可以删除
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -