1、C+C+课程设计报告课程设计报告 姓名姓名 学号学号 班级班级 08040804 任课教师任课教师 时间时间 教师指定题目教师指定题目 矩阵乘法计算矩阵乘法计算 评定难易级别评定难易级别 A A 级级 实验报告成绩实验报告成绩 一、题目名称:矩阵乘法计算一、题目名称:矩阵乘法计算 二、难易等级:二、难易等级: A 级级 三、程序设计思想三、程序设计思想 1、建立矩阵类的类模板,通过实例化形成模板类,再实例化成矩阵对象, 大大缩短了代码的长度,同时也方便了对象的建立; class CMatrix /矩阵类的模板 T * * Mat; /矩阵的头指针 int nRow; /矩阵的行数 int nC
2、ol; /矩阵的列数 public: CMatrix(); /缺省构造函数 CMatrix(T * * mat,int row,int col); /构造函数 CMatrix(int row,int col); /构造函数 CMatrix(int row,int col,int k); /构造函数,从键盘输入矩阵 VoidShow(); /输出 VoidInputFromFile(); /从文件中输入矩阵 friend CMatrixoperator *(CMatrix /重 载乘法 ; 2、依照模板,在模板外依次定义相关的函数模板,再通过实例化建立相应 的成员函数,同样方便快捷,避免了代码的
3、冗长,程序层次清晰; template CMatrix:CMatrix(int row,int col) /两个参数的构造函数 3、建立选择函数 choose,实现程序的多态性,同时也简化了主函数的内容, 主函数只需简单调用 choose 函数就能执行整个程序的相关功能; void choose() /数据类型选择函数 自评成绩:优 coutsjlx; switch(sjlx) case 1: choose1(1); break; case 2: choose1(0.0); break; case 3: choose1(1e-10); break; default:coutMat00 Mat0
4、1 Mat0j Mat1 -Mat10 Mat11 Mat1j : : Mati -Mati0 Mati1 Matij 实现构造的代码为: template CMatrix:CMatrix(int row,int col) /两个参数的构造函数 int i,j; nRow=row,nCol=col; Mat=new T*nRow; for(i=0;iMatij; 3、运算符的重载 要实现矩阵间的乘法运算,有必要对其运算符进行重载。而乘法运算符又要 针对不同数据类型进行运算,因此,对运算符重载函数模板化也是很有必要的。 template CMatrix operator* (CMatrix fo
5、r(int i=0;iMatij; 文件输入: template void CMatrix:InputFromFile() /矩阵文件输入函数 ifstream infile; infile.open(“daijp.txt“,ios:nocreate); if(!infile) coutMatij; infile.close(); 矩阵的输出: template void CMatrix:Show() /矩阵输出函数 int i,j; for(i=0;ia; switch(a) case 1:goto loop; break; case 2: coutMatij; template CMatrix:CMatrix(int row,int col,int k)/三个参数的构造函数 nRow=row,nCol=col; Mat=new T*nRow; for(int i=0;iMatij; infile.close(); template CMatrix operator* (CMatrix for(int i=0;isrfs; switch(srfs) /用于选择不同的输入方式 case 1: CMatrix mata