terr0rist 发表于 2018-3-12 11:37:38

求助,一道考研复试上机题,因为题目众多,限时间上机变异通过,帮忙看看代码,能....

自己写的因为是要考试,为了方便用一维数组写的
矩阵类 ;实现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;   
   for(int i=0;i<m_row*m_col;i++)
   {
      m_pData=0;
   }
   return true;
}
//输入矩阵数据元素,创建新矩阵
bool CMatrix::create()
{

for(int i=0;i<m_row*m_col;i++)
{
   cin>>m_pData;
}
return true;
}
//矩阵输出函数
void CMatrix::output()
{
   int j=0;
   for(int i=0;i<m_row*m_col;i++)
   {
      cout<<m_pData<<" ";
   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=m_pData+M2.m_pData;
   return M;
}
//重载矩阵相减运算
CMatrix CMatrix::operator -(CMatrix &M2)
{   
   CMatrix M=*this;
   for(int i=0;i<m_row*m_col;i++)
   M.m_pData=m_pData-M2.m_pData;
   return M;
}
//重载矩阵与常数相乘运算
CMatrix CMatrix::operator *(int &m)
{
   CMatrix M=*this;
   for(int i=0;i<m_row*m_col;i++)
   M.m_pData=m_pData*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=m_pData*M2.m_pData;
      j++;
   if(j==M2.m_row) j=0;
   }
   return M2;
}

terr0rist 发表于 2018-3-12 11:45:15

#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;   
   for(int i=0;i<m_row*m_col;i++)
   {
      m_pData=0;
   }
   return true;
}
//输入矩阵数据元素,创建新矩阵
bool CMatrix::create()
{

for(int i=0;i<m_row*m_col;i++)
{
   cin>>m_pData;
}
return true;
}
//矩阵输出函数
void CMatrix::output()
{
   int j=0;
   for(int i=0;i<m_row*m_col;i++)
   {
      cout<<m_pData<<" ";
   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=m_pData+M2.m_pData;
   return M;
}
//重载矩阵相减运算
CMatrix CMatrix::operator -(CMatrix &M2)
{   
   CMatrix M=*this;
   for(int i=0;i<m_row*m_col;i++)
   M.m_pData=m_pData-M2.m_pData;
   return M;
}
//重载矩阵与常数相乘运算
CMatrix CMatrix::operator *(int &m)
{
   CMatrix M=*this;
   for(int i=0;i<m_row*m_col;i++)
   M.m_pData=m_pData*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=m_pData*M2.m_pData;
      j++;
   if(j==M2.m_row) j=0;
   }
   return M2;
}
页: [1]
查看完整版本: 求助,一道考研复试上机题,因为题目众多,限时间上机变异通过,帮忙看看代码,能....