C++作业:一个简单的矩阵类
因为老板的关系,去听了C++的课,作业是一个简单的矩阵类。在 win xp+vc6 通过
#include <iostream.h>
class YuMatrix
{
private:
int _rowLen,_colLen;
float **data;
initData(int c,int r);
public:
YuMatrix(int col=0,int row=0);
YuMatrix(YuMatrix &ymt);
~YuMatrix();
ShowMatrix();
YuMatrix &operator +(YuMatrix ym);
YuMatrix operator *(YuMatrix ym);
YuMatrix &operator =(YuMatrix ym);
};
YuMatrix::initData(int c,int r)
{
_rowLen=r;
_colLen=c;
data = new float *[r];
for (int i=0;i<r;i++)
{
data[i]=new float[c];
}
}
YuMatrix::YuMatrix(int col,int row)
{
initData(col,row);
for(int i=0;i<_rowLen;i++)
for(int j=0;j<_colLen;j++)
data[i][j]=(float)((i+1)+0.1*(j+1));
}
YuMatrix::YuMatrix(YuMatrix &ymt)
{
_rowLen=ymt._rowLen ;
_colLen=ymt._colLen ;
initData(_colLen,_rowLen);
for(int i=0;i<_rowLen;i++)
for(int j=0;j<_colLen;j++)
data[i][j]=ymt.data[i][j];
}
YuMatrix::ShowMatrix()
{
for (int i=0;i<_rowLen;i++)
{
for(int j=0;j<_colLen;j++)
{
cout<<data[i][j]<<" ";
}
cout<<"\n";
}
}
YuMatrix &YuMatrix::operator +(YuMatrix ym)
{
//行列相等才能相加
if(_colLen==ym._colLen&&_rowLen==ym._rowLen)
{
for(int i=0;i<_rowLen;i++)
for(int j=0;j<_colLen;j++)
data[i][j]+=ym.data[i][j];
return(*this);
}
}
YuMatrix YuMatrix::operator *(YuMatrix ym)
{
//第一个的列数等于第二个的行数才能相乘
if(_colLen==ym._rowLen)
{
//构造新的矩阵
YuMatrix tempym(ym._colLen,_rowLen);
float temp=0;
for(int i=0;i<ym._colLen;i++)
for(int j=0;j<_rowLen;j++)
{
for(int k=0;k<_colLen;k++)
temp+=(data[j][k]*ym.data[k][i]);
tempym.data[j][i]=temp;
temp=0;
}
return(tempym);
}
}
YuMatrix &YuMatrix::operator =(YuMatrix ym)
{
if(_colLen!=ym._colLen || _rowLen!=ym._rowLen)
{
YuMatrix::~YuMatrix ();
initData(ym._colLen,ym._rowLen);
}
for(int i=0;i<_rowLen;i++)
for(int j=0;j<_colLen;j++)
data[i][j]=ym.data[i][j];
return(*this);
}
YuMatrix::~YuMatrix()
{
if(_colLen*_rowLen != 0 )
{
for(int i=_rowLen-1;i>=0;i--)
{
if (data[i]!=NULL)
delete[] data[i];
}
if (data!=NULL)
delete[] data;
} 
}

void main(void)
{
YuMatrix matrix1(3,4);
YuMatrix matrix2(matrix1);
YuMatrix matrix3(2,3);
YuMatrix matrix4(3,3);
YuMatrix matrix5(2,3);
YuMatrix matrix6(5,5);
matrix1.ShowMatrix();
cout<<endl;
matrix2.ShowMatrix();
cout<<endl;
matrix3=matrix1+matrix2;
matrix3.ShowMatrix();
cout<<endl;
matrix6=matrix4*matrix5;
matrix6.ShowMatrix();
}





浙公网安备 33010602011771号