|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
自己写的因为是要考试,为了方便用一维数组写的
矩阵类 ;实现int就可以;
构造函数;
析构函数;
拷贝构造函数;
矩阵的加减,乘;
矩阵的转置;
相关输入输入函数;
写一个矩阵,元素可以自动生成;
输出A,B
和A的转置。
还有几个功能未实现,转置,和矩阵元素可以随机生成;
#include<iostream>
#include<stdlib.h>
using namespace std;
class CMatrix
{
public:
CMatrix(int,int);
~CMatrix(){};
bool initialize(int,int);
bool create();
void output();
CMatrix operator +(CMatrix &M2);
CMatrix operator -(CMatrix &M2);
CMatrix operator *(int &m);
CMatrix operator *(CMatrix &M2);
private:
int m_row;
int m_col;
double *m_pData;
};
CMatrix::CMatrix(int r,int c)
{
initialize(r,c);
}
bool CMatrix::initialize(int r,int c)
{
m_row=r;
m_col=c;
m_pData=new double[r*c];
for(int i=0;i<m_row*m_col;i++)
{
m_pData[i]=0;
}
return true;
}
//输入矩阵数据元素,创建新矩阵
bool CMatrix::create()
{
for(int i=0;i<m_row*m_col;i++)
{
cin>>m_pData[i];
}
return true;
}
//矩阵输出函数
void CMatrix::output()
{
int j=0;
for(int i=0;i<m_row*m_col;i++)
{
cout<<m_pData[i]<<" ";
j++;
if(j==m_col) {j=0;cout<<"\n";}
}
}
//重载矩阵相加运算
CMatrix CMatrix::operator +(CMatrix &M2)
{
CMatrix M=*this;
for(int i=0;i<m_row*m_col;i++)
M.m_pData[i]=m_pData[i]+M2.m_pData[i];
return M;
}
//重载矩阵相减运算
CMatrix CMatrix::operator -(CMatrix &M2)
{
CMatrix M=*this;
for(int i=0;i<m_row*m_col;i++)
M.m_pData[i]=m_pData[i]-M2.m_pData[i];
return M;
}
//重载矩阵与常数相乘运算
CMatrix CMatrix::operator *(int &m)
{
CMatrix M=*this;
for(int i=0;i<m_row*m_col;i++)
M.m_pData[i]=m_pData[i]*m;
return M;
}
//重载矩阵与矩阵乘法运算
CMatrix CMatrix::operator *(CMatrix &M2)
{
CMatrix M=*this;
int j=0;
for(int i=0;i<m_row*m_col;i++)
{
M.m_pData[i]=m_pData[i]*M2.m_pData[i+j*m_col];
j++;
if(j==M2.m_row) j=0;
}
return M2;
} |
|