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

📄 shiyan13_1.cpp

📁 为C++学习者
💻 CPP
字号:
#include<iostream.h>
#include <stdlib.h>
class Matrix
{
	friend Matrix Rotate(Matrix &m);
public:
	int **pMatrix;
	int iMaxx,iMaxy;
	static int ObjectAliveNo;
public:
	Matrix(unsigned int x ,unsigned int y);
	Matrix(Matrix &m);
	~Matrix();
	bool SetValue(unsigned int x ,unsigned int y ,int value);
	void Input();
	void Print() const;
	Matrix operator*(Matrix &m);
	Matrix operator=(Matrix &m);
};
int Matrix::ObjectAliveNo=0;
Matrix::Matrix(unsigned int x,unsigned int y)
{
	pMatrix=new int *[x];
	if(! pMatrix)
	{
		cerr<<"\n Matrix constructor error!\n";
		exit(0);
	}
	for(int i=0;i<x;i++)
	{
		pMatrix[i]=new int[y];
	}
	iMaxx=x;
	iMaxy=y;
	ObjectAliveNo++;
}
Matrix::Matrix(Matrix & m)
{
	iMaxx=m.iMaxx;
	iMaxy=m.iMaxy;
	pMatrix=new int*[iMaxx];
	if(!pMatrix)
	{
		cerr<<"\n Matrix constructing error!\n";
		exit(0);
	}
	for(int i=0;i<iMaxx;i++)
	{
		pMatrix[i]=new int[iMaxy];
	}
	int j;
	for(i=0;i<iMaxx;i++)
		for(j=0;j<iMaxy;j++)
			pMatrix[i][j]=m.pMatrix[i][j];
	ObjectAliveNo++;
}
Matrix Matrix::operator =(Matrix &m)
{
	for(int i=0;i<iMaxx;i++)
		delete[]pMatrix[i];
	delete[]pMatrix;
	iMaxx=m.iMaxx;
	iMaxy=m.iMaxy;
	pMatrix=new int *[iMaxx];
	if(!pMatrix)
	{
		cerr<<"\n Matrix constructing error!\n";
		exit(0);
	}
	for(i=0;i<iMaxx;i++)
	{
		pMatrix[i]=new int[iMaxy];
	}
	int j;
	for(i=0;i<iMaxx;i++)
		for(j=0;j<iMaxy;j++)
			pMatrix[i][j]=m.pMatrix[i][j];
	ObjectAliveNo++;
	return *this;
}
Matrix::~Matrix()
{
	for(int i=0;i<iMaxx;i++)
		delete[]pMatrix[i];
	delete[]pMatrix;
	ObjectAliveNo--;
}
bool Matrix::SetValue(unsigned int x,unsigned int y,int value)
{
	if((x>=iMaxx)||(y>=iMaxy))
	{
		cerr<<"\n Invalid(x,y):"<<x<<','<<y<<'\n';
		return false;
	}
	else
	{
		pMatrix[x][y]=value;
		return true;
	}
}
void Matrix::Input()
{
	int ix,iy,value;
	for(ix=0;ix<iMaxx;ix++)
		for(iy=0;iy<iMaxy;iy++)
		{
			cin>>value;
			SetValue(ix,iy,value);
		}
}
void Matrix::Print()const
{
	int ix,iy;
	cout<<"\n Sun of Matrix object(s)="<<ObjectAliveNo;
	cout<<"\n Matrix("<<iMaxx<<','<<iMaxy<<")is";
	for(ix=0;ix<iMaxx;ix++)
	{
		cout<<'\n';
		for(iy=0;iy<iMaxy;iy++)
			cout<<pMatrix[ix][iy]<<' ';
	}
}
Matrix Matrix::operator *(Matrix & m)
{
	if(iMaxy!=m.iMaxx)
	{
		cerr<<"\n Cannot multiply Matrix a with b!\n";
		return * this;
	}
	int ix,iy,iz;
	Matrix c(iMaxx,m.iMaxy);
	for(ix=0;ix<iMaxx;ix++)
		for(iy=0;iy<m.iMaxy;iy++)
		{
			c.pMatrix[ix][iy]=0;
			for(iz=0;iz<iMaxy;iz++)
			{
				c.pMatrix[ix][iy]+=pMatrix[ix][iz]*m.pMatrix[iz][iy];
			}
		}
		return c;
}
int main()
{
	Matrix a(2,2);
	cout<<"Input Matrix a[2][2]:\n";
	a.Input();
	a.Print();
	Matrix b(2,3);
	cout<<"\n Input b[2][3]:\n";
	b.Input();
	b.Print();
	   //测试矩阵的乘积
	cout<<"\n operatpor *|Multiply Matrix a with b:";
	Matrix e=a*b;
	e.Print();
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -