资源描述
C++课程设计试验汇报
姓名 学号 班级
任课老师 时间 9月
老师指定题目 4-4 矩阵转置和乘法计算 评定难易等级 A
试验汇报成绩
.试验内容:
1.1 程序功效介绍
该程序定义了一个向量类,里面元素是模板形式,定义了相关向量了类多种属性、方法及运算符重载函数。
1.2 程序设计要求
(1) 利用已知向量类对象定义一个矩阵类,矩阵类数据是向量子对象,一样定义矩阵类多种属性、方法及运算符重载函数。
(2) 完善组员函数,使矩阵能够由文件输入,具体输入格式自己要求。
(3) 完成矩阵赋值、转置、乘法等运算,要求用整形矩阵和浮点型矩阵分别演算。
(4) 更改main函数结构,可由用户选择输入矩阵数据方法,程序能够连续运行,直到选择退出为止。
2. 源程序结构步骤框图和说明(含新增子函数结构框图)
Y
选择退出
作者:喻皓 学号:
N
进行运算
开始进入程序
提醒输入矩阵类型
输入选择
提醒输入矩阵方法
输入选择
提醒选择对矩阵操作类型
输入选择
输出结果
是否继续
实施程序
结束退出
3. 基础数据结构
定义类模板,将函数用链表将部分功效函数连接起来。其中定义了结构函数,析构函数,重载赋值、乘法、数乘、输入、输出,矩阵转置等函数,实现矩阵矩阵赋值、转置、乘法等运算。
template <class T>
class CMatrix
{
struct node
{
Vector<T> **f;//**************************************组成矩阵向量指针
int refcnt;//*************************************************被引用次数
int length;//*************************************************矩阵行数
T **tmppointer;//*******************************************头指针类型
} *p;
public:
//
Vector<T> ** begin() const {return p->f;};
CMatrix();//****************************************************默认结构
CMatrix(int xsize,int ysize,T init=0);//***************************结构函数
CMatrix(int xlength,const Vector<T> *vec);//************************结构函数
CMatrix(CMatrix<T> &x); //**************************************拷贝结构函数
~CMatrix(); //****************************************************析构函数
CMatrix<T> & operator=(const CMatrix<T> &mat);//**************重载赋值运算符
int row() const;//**************************************************返回行数
int col() const;//**************************************************返回列数
Vector<T> & operator []( int i);//********************************重载[]
void Inver(CMatrix &mat);//****************************************矩阵转置
operator T **();//****************************************************重载**
void ReadFromFile();//*************************************从文件中读入矩阵
friend CMatrix cpy(CMatrix &v);//***********************************拷贝函数
friend std::ostream & operator<<(std::ostream &s,const CMatrix<T> &mat);//重载输出函数
friend std::istream & operator>>(std::istream &s,const CMatrix<T> &mat);//重载输入函数
friend CMatrix<T> operator*(CMatrix<T> &v1,CMatrix<T> &v2);//******矩阵乘法
friend CMatrix<T> operator*(const CMatrix<T> &v,T val); //************数乘
};
4. 程序运行结果界面
图1。进入程序、选择输入方法
图2。输入两个矩阵并选择对矩阵操作 图3。实现矩阵转置
图4。实现矩阵乘法 图5。实现矩阵数乘
5. 课程设计碰到技术问题和处理思绪
问题1:对于基础输入输出符号和运算符号无法利用到矩阵中、需要重载
处理措施:重载输入、输出、乘法、数乘、赋值等、使其能对矩阵进行操作
问题2:当输入数字个数异于事先设定好矩阵容量时会出现错误
比如:当输入行数和列数分别为2和3时 当输入“1 2 3” (个数少于2*3)则无法实现缺省状态当输入“1 2 3 4 5 6 7”时 则多出数字7将会成为下一要求输入数据一个数据
处理措施:在初始界面输入提醒信息,本程序尚不能处理。
展开阅读全文