当前位置:文档之家› c++课程设计-矩阵的转置与乘法计算

c++课程设计-矩阵的转置与乘法计算

c++课程设计-矩阵的转置与乘法计算
C++课程设计实验报告
姓名学号班级
任课教师时间 9月
教师指定题目4-4 矩阵的转置与乘法计算评定难易级别 A 实验报告成绩
1.实验内容:
1.1 程序功能介绍
该程序定义了一个向量类,里面的元素是模板形式,定义了有关向量了类的各种属性、方法及运算符重载函数。

1.2 程序设计要求
(1)利用已知的向量类对象定义一个矩阵类,矩阵类的数据是向量子对象,同样定义矩阵类的各种属性、方法及运算符重载函数。

(2)完善成员函数,使矩阵可以由文件输入,具体的输入格式自己规定。

(3)完成矩阵的赋值、转置、乘法等运算,要求用整形矩阵和浮点型矩阵分别演算。

(4)更改main函数结构,可由用户选择输入矩阵数据的方法,程序可以连续运行,直到选择退出为止。

2. 源程序结构流程框图与说明(含新增子函数的结构框图)
作者:喻皓学号:0511590125
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将会成为下一要求输入
数据的一个数据
解决办法:在初始界面输入提示信息,本程序尚不能解决。

相关主题