没有合适的资源?快使用搜索试试~ 我知道了~
C++课程设计矩阵乘法计算.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 17 浏览量
2023-02-27
20:19:31
上传
评论
收藏 88KB DOCX 举报
温馨提示
试读
12页
.
资源推荐
资源详情
资源评论
C++课程设计报告
姓名
时间
学号
班级 0804
任课教师
2009.9
教师指定题目
实验报告成绩
矩阵乘法计算
评定难易级别 A 级
自评成绩:优
一、题目名称:矩阵乘法计算
二、难易等级: A 级
三、程序设计思想
1、建立矩阵类的类模板,通过实例化形成模板类,再实例化成矩阵对象,
大大缩短了代码的长度,同时也方便了对象的建立;
class CMatrix
//矩阵类的模板
{
T * * Mat; //矩阵的头指针
int nRow; //矩阵的行数
int nCol; //矩阵的列数
public:
CMatrix();
//缺省构造函数
CMatrix(T * * mat,int row,int col);
//构造函数
CMatrix(int row,int col);
//构造函数
CMatrix(int row,int col,int k);
//构造函数,从键盘输入矩阵
VoidShow();
//输出
VoidInputFromFile();
//从文件中输入矩阵
friend CMatrix<T>operator *(CMatrix<T> &mat1,CMatrix<T> &mat2);//重
载乘法
};
2、依照模板,在模板外依次定义相关的函数模板,再通过实例化建立相应
的成员函数,同样方便快捷,避免了代码的冗长,程序层次清晰;
template<class T>
CMatrix<T>::CMatrix(int row,int col)
//两个参数的构造函数
{
……
}
3、建立选择函数 choose,实现程序的多态性,同时也简化了主函数的内容,
主函数只需简单调用 choose 函数就能执行整个程序的相关功能;
void choose()
//数据类型选择函数
{
cout<<"时间:2009 年 9 月 26 日\n"<<endl<<"作者:"<<setw(32)<<"学号:
"<<setw(32)<<"专业:电子技术"<<endl;
cout<<endl<<"<1> 整型"<<endl<<"<2> 浮点型"<<endl<<"<3> 双精
度型"<<endl;
cout<<"请选择数据类型:\n";
int sjlx;
cin>>sjlx;
switch(sjlx)
{
case 1:
{
choose1(1);
}break;
case 2:
{
choose1(0.0);
}break;
case 3:
{
choose1(1e-10);
}break;
default:cout<<"输入选择错误!!!"<<endl;
}
4、main 函数中加入相关界面输出语句和程序结束语句,使程序更加人性化,
并加入了异常处理语句,使程序运行的更加稳定可靠;
四、程序增加功能及实现办法
1、模板的使用
本程序使用了大量的模板,譬如矩阵类模板、相关函数模板,以 T 为模板
参数,通过对 T 的不同类型的选择实现相应的运算处理。其中 choose1()函数
本是无参函数,为了方便模板化,给其赋以伪参数T,在执行时通过T 的取值生
成相应的函数模板,真可谓方便!!
template<class T>
void choose1(T)
用于函数模板实例化
//数据输入类型选择函数模板,其中 T 为伪参数,
{
…………
}
调用时:
switch(sjlx)
{
case 1:
{
choose1(1);
//生成 int 型模板
}break;
case 2:
{
choose1(0.0);
}break;
case 3:
//生成 float 型模板
{
choose1(1e-10);
}break;
default:cout<<"输入选择错误!!!"<<endl;
//生成 double 型模板
}
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]
实现构造的代码为:
template<class T>
CMatrix<T>::CMatrix(int row,int col)
//两个参数的构造函数
{
int i,j;
nRow=row,nCol=col;
Mat=new T*[nRow];
for(i=0;i<nRow;i++)
{
Mat[i]=new T[nCol];
}
cout<<"请输入数据:\n";
for(i=0;i<nRow;i++)
for(j=0;j<nCol;j++)
{
cout<<"第["<<i+1<<"]["<<j+1<<"]个数据:";
cin>>Mat[i][j];
}
}
3、运算符的重载
要实现矩阵间的乘法运算,有必要对其运算符进行重载。而乘法运算符又要
针对不同数据类型进行运算,因此,对运算符重载函数模板化也是很有必要的。
template<class T>
CMatrix<T> operator* (CMatrix<T> &mat1,CMatrix<T> &mat2) // 矩阵乘法运
剩余11页未读,继续阅读
资源评论
xxpr_ybgg
- 粉丝: 6560
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功