您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 绩效管理 > C++课程设计c++矩阵类(简洁版)
设计报告学院:信息科学与技术学院专业:电子信息工程年级:07级2班姓名:王伟男学号:2007082060程序名称:c++矩阵类关于运算符的重载。指导老师:常耀辉本程序是一个关于矩阵类。主要亮点和难点就是通过对“+”,“-”,“*”的重载,从而实现矩阵和矩阵的加,减,乘以及矩阵与常数的乘法。在程序主要内容中首先定义Cmatrix类,在类中共用部分声明构造函CMatrix(int,int)和CMatrixoperator+(CMatrix&M2)——重载矩阵与矩阵加运算,CMatrixoperator-(CMatrix&M2)——重载矩阵与矩阵减运算,CMatrixoperator*(int&m)重载矩阵与常数乘法运算,CMatrixoperator*(CMatrix&M2)重载矩阵与矩阵乘法运算,再声明boolinitialize(int,int)函数,用于矩阵初始化;boolcreate()函数,用于由用户输入矩阵各元素;voidoutput()函数,用于输出矩阵各元素。在私有部分定义intm_row——表示矩阵行数;intm_col——表示矩阵列数;double*m_pData——使用指针指向矩阵各元素,接下来就是在类外对各个函数的定义以及对变量的初始化。最后在主函数中调用重载函数,通过键盘输入你所需矩阵的列数和行数后自行定义你所要用到的矩阵。不过本程序局限于行数和列数相同的矩阵。流程图如下:CMatrix(int,int)和Boolinitialize(int,int)对矩阵初始化mtrx1.create()和mtrx2.create()分别创建两个矩阵Mtrx3对两个矩阵进行指定的运算Mtrx3.output()输出结果Main中函数入行数和列数按任意键后,流程不变再进行其余三种运算结束程序如下:#includeiostreamusingnamespacestd;classCMatrix{public:CMatrix(int,int);//构造函数boolinitialize(int,int);//矩阵初始化boolcreate();//由用户输入矩阵各元素voidoutput();//输出矩阵各元素CMatrixoperator+(CMatrix&M2);//重载矩阵加运算CMatrixoperator-(CMatrix&M2);//重载矩阵减运算CMatrixoperator*(int&m);//重载矩阵与常数乘法运算CMatrixoperator*(CMatrix&M2);//重载矩阵与矩阵乘法运算private:intm_row;//矩阵行数intm_col;//矩阵列数double*m_pData;//使用指针指向矩阵各元素};//构造函数CMatrix::CMatrix(intr,intc){initialize(r,c);}//矩阵初始化函数boolCMatrix::initialize(intr,intc){m_row=r;m_col=c;m_pData=newdouble[r*c];for(inti=0;im_row*m_col;i++){m_pData[i]=0;}returntrue;}//输入矩阵数据元素,创建新矩阵boolCMatrix::create(){m_pData=newdouble[m_row*m_col];for(inti=0;im_row*m_col;i++){cinm_pData[i];}returntrue;}//矩阵输出函数voidCMatrix::output(){intj=0;for(inti=0;im_row*m_col;i++){coutm_pData[i];j++;if(j==m_col){j=0;cout\n;}}}//重载矩阵相加运算CMatrixCMatrix::operator+(CMatrix&M2){CMatrixM=*this;for(inti=0;im_row*m_col;i++)M.m_pData[i]=m_pData[i]+M2.m_pData[i];returnM;}//重载矩阵相减运算CMatrixCMatrix::operator-(CMatrix&M2){CMatrixM=*this;for(inti=0;im_row*m_col;i++)M.m_pData[i]=m_pData[i]-M2.m_pData[i];returnM;}//重载矩阵与常数相乘运算CMatrixCMatrix::operator*(int&m){CMatrixM=*this;for(inti=0;im_row*m_col;i++)M.m_pData[i]=m_pData[i]*m;returnM;}//重载矩阵与矩阵乘法运算CMatrixCMatrix::operator*(CMatrix&M2){CMatrixM=*this;intj=0;for(inti=0;im_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;}returnM2;}intmain(){intlength,width,ch;cout请输入数组的大小(行数列数):;cinlengthwidth;CMatrixmtrx1(length,width),mtrx2(length,width),mtrx3(length,width);//输入数组cout请输入第一个数组:endl;mtrx1.create();cout请输入第二个数组:endl;mtrx2.create();mtrx3=mtrx1+mtrx2;coutendl相加之后的数组是:endl;mtrx3.output();system(pause);cout请输入第一个数组:endl;mtrx1.create();cout请输入第二个数组:endl;mtrx2.create();mtrx3=mtrx1-mtrx2;coutendl相减后的数组是:endl;mtrx3.output();system(pause);cout请输入第一个数组:endl;mtrx1.create();cout请输入第二个数组:endl;mtrx2.create();mtrx3=mtrx1*mtrx2;coutendl相乘后的数组是:endl;mtrx3.output();system(pause);cout请输入一个数组:endl;mtrx1.create();cout请输入一个常数:endl;cinch;mtrx3=mtrx1*ch;coutendl相乘后的数组是:endl;mtrx3.output();system(pause);return0;}
本文标题:C++课程设计c++矩阵类(简洁版)
链接地址:https://www.777doc.com/doc-5412827 .html