C++课程设计报告矩阵乘法计算.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C课程设计报告矩阵乘法计算

C++课程设计报告 一、题目名称:矩阵乘法计算 二、难易等级: A级 三、对题目的分析和注释: 分析: 依次建立两个矩阵空间并按照矩阵乘法规则进行运算。 (矩阵的乘法规则: 矩阵的乘法运算必须符合m*n的矩阵与n*s的矩阵相乘。 第一个矩阵的第i行的元素依次乘以第二个矩阵的第j列元素后结果相加组成生成矩阵第i行第j列元素。) 注释: (1)设计一个矩阵类,将相应的函数和数据封装在类中,简化程序。 (2)修改程序结构,使程序可以反复执行,直至按键选择退出为止。 (3)本程序用数组表示5*5矩阵,将其改为根据输入矩阵的大小动态分配空间[m][n]来放置数据,其中m,n为用户可输入的任意整数。 (4)增加类的构造函数和成员函数,使得矩阵数据既可以用在对象初始化时赋值,也可以通过键盘赋值,还可以通过读取数据文件输入。 (5)用模板的形式改写矩阵数据类型,使得矩阵中的数据既可以是整型数据,也可以是浮点型数据,执行程序时,分别定义两个整型矩阵和两个浮点型矩阵进行乘法验证。 (6)完成矩阵的乘法运算,在运算之前判断这两个矩阵能否满足乘法运算的条件,若不满足,则给出提示信息。 四、所增加功能模块的设计 如果要说增加功能的话,自己编的程序里面不多,我只是按照题目要求,设计了一个矩阵类,同时用模板的形式改写矩阵数据类型和运算符的重载。 1、模板的使用 我使用了大量的模板,以T为模板参数,通过对T的不同类型的选择实现相应的运算处理。其中choose1()函数本是无参函数,为了方便模板化,给其赋以伪参数T,在执行时通过T的取值生成相应的函数模板。 templateclass T void choose1(T) { } 调用时: switch(sjlx) { case 1: { choose1(1); }break; case 2: { choose1(0.0); }break; case 3: { choose1(1e-10); }break; default:cout输入选择错误!!!endl; } 2、矩阵类的构造 按照课本要求采用二级指针动态开辟内存空间,节省内存使用; 其中数据结构如下: Mat--Mat[0] -----Mat[0][0] Mat[0][1] ……Mat[0][j] Mat[1] -----Mat[1][0] Mat[1][1] ……Mat[1][j] : : Mat[i] -----Mat[i][0] Mat[i][1] ……Mat[i][j] 实现构造的代码为: templateclass T CMatrixT::CMatrix(int row,int col) { int i,j; nRow=row,nCol=col; Mat=new T*[nRow]; for(i=0;inRow;i++) { Mat[i]=new T[nCol]; } cout请输入数据:\n; for(i=0;inRow;i++) for(j=0;jnCol;j++) { cout第[i+1][j+1]个数据:; cinMat[i][j]; } } 3、运算符的重载 要实现矩阵间的乘法运算,有必要对其运算符进行重载。而乘法运算符又要针对不同数据类型进行运算,所以我对运算符重载函数模板化。 templateclass T CMatrixT operator* (CMatrixT mat1,CMatrixT mat2) { CMatrixT mat3(mat1.nRow,mat2.nCol,0); for(int i=0;imat1.nRow;i++) for(int j=0;jmat2.nCol;j++) { mat3.Mat[i][j]=0; for(int k=0;kmat1.nCol;k++) mat3.Mat[i][j]+=mat1.Mat[i][k]*mat2.Mat[k][j]; } return mat3; } 五、设计中遇到的主要问题及解决办法 1、无法实现文件输入 主要原因是输入之前调用的是默认构造函数,只是简单赋值,并未开辟内存空间,后来调用带参构造函数就可以正常输入数据; 2、重载乘法运算的函数无法重载 经检查发现,由于重载的是友元函数,函数不存在this指针,因此必须显式地调用两个相乘的矩阵类。 六、设计中尚存的不足 1、功能还不够强大,只能做简单的矩阵乘法,我所期望的是能够做各种混合运算,具有强大处理功能的实用程序,希望在以后的

文档评论(0)

wnqwwy20 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档