鱼C论坛

 找回密码
 立即注册
查看: 2903|回复: 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;  
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-3-12 11:45:15 | 显示全部楼层
  1. #include<iostream>
  2. #include<stdlib.h>
  3. using namespace std;
  4. class CMatrix  
  5. {  
  6. public:  
  7. CMatrix(int,int);     
  8. ~CMatrix(){};
  9. bool initialize(int,int);  
  10. bool create();            
  11. void output();            
  12. CMatrix operator +(CMatrix &M2);   
  13. CMatrix operator -(CMatrix &M2);   
  14. CMatrix operator *(int &m);         
  15. CMatrix operator *(CMatrix &M2);
  16. private:  
  17. int m_row;      
  18. int m_col;      
  19. double *m_pData;  
  20. };  

  21. CMatrix::CMatrix(int r,int c)  
  22. {  
  23.   initialize(r,c);   
  24. }  

  25. bool CMatrix::initialize(int r,int c)  
  26. {  
  27.    m_row=r;  
  28.    m_col=c;  
  29.    m_pData=new double[r*c];   
  30.    for(int i=0;i<m_row*m_col;i++)  
  31.    {  
  32.       m_pData[i]=0;  
  33.    }  
  34.    return true;
  35. }  
  36. //输入矩阵数据元素,创建新矩阵  
  37. bool CMatrix::create()  
  38. {  

  39.   for(int i=0;i<m_row*m_col;i++)  
  40.   {  
  41.      cin>>m_pData[i];  
  42.   }  
  43. return true;  
  44. }  
  45. //矩阵输出函数  
  46. void CMatrix::output()  
  47. {  
  48.    int j=0;  
  49.    for(int i=0;i<m_row*m_col;i++)  
  50.    {  
  51.       cout<<m_pData[i]<<" ";  
  52.    j++;  
  53.    if(j==m_col) {j=0;cout<<"\n";}  
  54.    }  
  55. }  
  56. //重载矩阵相加运算  
  57. CMatrix CMatrix::operator +(CMatrix &M2)  
  58. {   
  59.    CMatrix M=*this;  
  60.    for(int i=0;i<m_row*m_col;i++)  
  61.      M.m_pData[i]=m_pData[i]+M2.m_pData[i];  
  62.    return M;  
  63. }  
  64. //重载矩阵相减运算  
  65. CMatrix CMatrix::operator -(CMatrix &M2)  
  66. {   
  67.    CMatrix M=*this;  
  68.    for(int i=0;i<m_row*m_col;i++)  
  69.      M.m_pData[i]=m_pData[i]-M2.m_pData[i];  
  70.    return M;  
  71. }  
  72. //重载矩阵与常数相乘运算  
  73. CMatrix CMatrix::operator *(int &m)  
  74. {  
  75.    CMatrix M=*this;  
  76.    for(int i=0;i<m_row*m_col;i++)  
  77.      M.m_pData[i]=m_pData[i]*m;  
  78.    return M;  
  79. }  
  80. //重载矩阵与矩阵乘法运算  
  81. CMatrix CMatrix::operator *(CMatrix &M2)  
  82. {  
  83.    CMatrix M=*this;  
  84.    int j=0;  
  85.    for(int i=0;i<m_row*m_col;i++)  
  86.    {  
  87.       M.m_pData[i]=m_pData[i]*M2.m_pData[i+j*m_col];  
  88.       j++;  
  89.    if(j==M2.m_row) j=0;  
  90.    }  
  91.    return M2;  
  92. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 07:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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