📄 shiyan13_1.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 + -