⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 b_8_1.cpp

📁 C++应用教程原码,里面包含该书中有十三章内容的代码,详细具体
💻 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 + -