鱼C论坛

 找回密码
 立即注册
查看: 2554|回复: 1

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

[复制链接]
发表于 2018-3-12 11:37:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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;  
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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[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;  
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-1 15:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表