c课程设计矩阵乘法计算

c课程设计矩阵乘法计算

ID:27659237

大小:143.75 KB

页数:11页

时间:2018-12-03

c课程设计矩阵乘法计算_第1页
c课程设计矩阵乘法计算_第2页
c课程设计矩阵乘法计算_第3页
c课程设计矩阵乘法计算_第4页
c课程设计矩阵乘法计算_第5页
资源描述:

《c课程设计矩阵乘法计算》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、C++课程设计报告姓名学号班级0804任课教师时间2009.9教师指定题目评定难易级别M实验报告成绩一、题目名称:矩阵乘法计算自评成缋:优二、难易等级:A级三、程序设计思想1、建立矩阵类的类模板,通过实例化形成模板类,再实例化成矩阵对象,大大缩短了代码的长度,同时也方便了对象的建立;classCMatrix//矩阵类的模板{T**Mat;//矩阵的头指针intnRow;//矩阵的行数intnCol;//矩阵的列数public:CMatrix();//缺省构造函数CMatrix(T**mat,introw,intcol

2、);//构造函数CMatrix(introw,intcol);//构造函数CMatrix(introw,intcol,intk);//构造函数,从键盘输入妃阵Voidshow();"输出VoidlnputFromFile(};//从文件中输入矩阵frienT>operator*(CMatrix//重载乘法};2、依照模板,在模板外依次定义相关的函数模板,再通过实例化建立相应的成员函数,同样方便快捷,避免了代码的冗长,程序层次清晰;tessT>CMatrtrix(introw,intcol)//两个参数的构造函数{}3

3、、建立选择函数choose,实现程序的多态性,同时也简化了主函数的内容,主函数只需简单调用choose函数就能执行整个程序的相关功能;voidchoose()//数据类型选择函数{co09年9月26Rendl;H;intsjlx;cin»sjlx;switch(sjlx){case1:{choose1(1);}break;case2:{choosel(0.0);}break;case3:{choosel(le-lO);}break;defaul}4、main函数中加入相关界面输出语句和程序结束语句,使程序更加

4、人性化,并加入了异常处理语句,使程序运行的更加稳定可靠;四、程序增加功能及实现办法1、模板的使用本程序使用了大量的模板,譬如矩阵类模板、相关函数模板,以T为模板参数,通过对T的不同类型的选择实现和应的运算处理。其中choosel()函数木是无参函数,为了方便模板化,给其赋以伪参数T,在执行时通过T的取值生成相应的函数模板,真可谓方便!!templatessT>voidch00Sel(T)//数据输入类型选择函数模板,其中T为伪参数,用于函数模板实例化{}调用时:switch(sjlx){case1:{choosel(

5、l};//生成int型模板Jbreak;case2:choosel(O.O);//生成float型模板}break;case3:{choosel(le-lO);//生成double型模板}break;defaultsdl;}2、矩阵类的构造本程序采用二级指针动态开辟存空间,结构合理,操作方便,节省内存使用;其中数据结构如下:Mat->Mat[0]——>Mat[0][0]Mat[0][l]Mat[O][j]Mat[1]>Mat[l][0]Mat[l][l]Mat[l][j]Mat[i]>Mat[i][0]Mat[i][

6、l]Mat[i][j]实现构造的代码为:templa>>::CMatrix(introw,intcol)//两个参数的构造函数{intij;nRow=row,nCol=col;Mat=newT*[nRow];for(;i++){Mat[i]=newT[nCol];}coutn";for(i=0+)for(j=0;){H]个数据:";cin»Mat[i][j];}}3、运算符的重载要实现矩阵间的乘法运算,有必要对其运算符进行重载。而乘法运算符乂要针对不同数据类型进行运算,因此,对运算符重载函数模板化也是很有必要的。cl

7、assT>CMperator*(at2)//矩阵乘法运算符重载{CMat3(matl.nRow,mat2.nCol,0);for(matl.nRow;i++)for(int2.nCol;j++){mat3.Mat[i][j]=O;for(intk=Col;k++)mat3.Mat[i][j]+=matl.Mat[i][k]*mat2.Mat[k][j];}returnmat3;}无论何种数据类型的矩阵,其乘法算法都是一致的,详见以上代码。4、数据的输入输出本程序数据可以初始赋值也可以通过键盘输入,还可以从外部文件输入

8、。键盘输入:cou";for(i=++)for(j=0+){cin»Mat[i][j];}文件输入:lassT>voiT>::lnputFromFile()//矩阵文件输入函数{ifstrearninfile;infile.open("daijp.txt',,ios::nocreate);if(!infile){入文件不存在,请先建立输入文

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。