资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
创建三角矩阵类创建三角矩阵类C+语言程序设计 实验六1C+语言程序设计鲁东大学问题描述问题描述l行数与列数相等的方阵,开发类行数与列数相等的方阵,开发类TriMat,它,它定义的是对角线以下的元素值全为定义的是对角线以下的元素值全为0的上三的上三角矩阵。角矩阵。2C+语言程序设计鲁东大学上三角矩阵的性质上三角矩阵的性质1.假设矩阵中共有n2个元素,则其中为零的元素个数为(n*n-n)/22.矩阵加法就是相应元素值相加3.矩阵减法就是相应元素值相减4.矩阵乘法,假设乘积矩阵C是三角矩阵A和B相乘的结果,C(i,j)的值根据A的第i行和B的第j列计算出来的5.三角矩阵的行列式的值就是对角线上元素的乘积3C+语言程序设计鲁东大学三角矩阵的存储三角矩阵的存储l如何选择三角矩阵的存储结构是至关如何选择三角矩阵的存储结构是至关重要的问题重要的问题l可以考虑为零的元素不占用存储空间可以考虑为零的元素不占用存储空间l用一维数组用一维数组M只存放上三角元素只存放上三角元素4C+语言程序设计鲁东大学类的描述类的描述class TriMat private: /M中各行的起始下标 int rowTableROWLIMIT;/行列数 int n;/存放上三角中的元素 double MELEMENTLIMIT;5C+语言程序设计鲁东大学类的描述类的描述public: /构造函数,无缺省值 TriMat(int matsize); /访问矩阵元素方法 void PutElement (double item, int i, int j); double GetElement(int i,int j) const; /矩阵的算术运算 TriMat AddMat(const TriMat& A) const; double DetMat(void) const; 6C+语言程序设计鲁东大学类的描述类的描述/矩阵I/O操作 void ReadMat(void); void WriteMat(void) const; /取矩阵维数 int GetDimension(void) const;7C+语言程序设计鲁东大学类使用的举例类使用的举例#include “TriMat.h”TriMat A(10),B(10),C(10);A.ReadMat();B.ReadMat();C=A.AddMat(B);C.WriteMat();8C+语言程序设计鲁东大学三角矩阵的存储三角矩阵的存储l标准数组定义需要标准数组定义需要n2个内存位置,但个内存位置,但为了节省存储空间,我们将三角矩阵为了节省存储空间,我们将三角矩阵中的各项存储到一维数组中的各项存储到一维数组M中,主对中,主对角线以下的各项不再被存储角线以下的各项不再被存储9C+语言程序设计鲁东大学三角矩阵的存储三角矩阵的存储行行存储数据个数存储数据个数存储的数据存储的数据0n(A00A0,n-1)1n-1(A11A1,n-1)2n-2(A22A2,n-1)n-22(An-2,n-2An-2,n-1)n-11(An-1,n-1)10C+语言程序设计鲁东大学三角矩阵的存储三角矩阵的存储l存储算法需要一个存取函数,它必须存储算法需要一个存取函数,它必须可以确定存储了元素项可以确定存储了元素项Ai,j,存取函数,存取函数利用一直到利用一直到i行的各行所存储的元素个行的各行所存储的元素个数的信息,对每一行数的信息,对每一行i都可以计算这一都可以计算这一数据,将其存放到一个数组数据,将其存放到一个数组(rowTable)中,以供存取函数使用。)中,以供存取函数使用。11C+语言程序设计鲁东大学三角矩阵的存储三角矩阵的存储行行rowTable说明说明0rowTable0=0第第0行前的行前的0项项1rowTable1=n第第1行前的行前的n项项2rowTable2=n+(n-1)第第2行前的行前的n+(n-1)项项3rowTable3=n+(n-1)+(n-2)第第3行前的所有项行前的所有项.n-1rowTalben-1=n+(n-1)+212C+语言程序设计鲁东大学三角矩阵的存储三角矩阵的存储l存取存取Ai,j的算法如下:的算法如下:1.若j=i,则取rowTablei的值,即数组M中存储的一直到第i行的所有元素个数,在第i行,前i项是0,不在M中存放,元素项Ai,j的位置是MrowTalbei+(j-i)。13C+语言程序设计鲁东大学类的声明类的声明#include #include #include / 上三角矩阵存储元素个数及行数的最大值const int ELEMENTLIMIT = 325;const int ROWLIMIT = 25;14C+语言程序设计鲁东大学类的声明类的声明class TriMat private: /私有数据成员 int rowTableROWLIMIT;/ M中各行的起始下标int n;/ 行/列数double MELEMENTLIMIT;/存放上三角中的元素15C+语言程序设计鲁东大学类的声明类的声明public: / constructor. no default parameters / 构造函数,无缺省参数 TriMat(int matsize); / matrix element access methods /访问矩阵元素的方法 void PutElement (double item, int i, int j); double GetElement(int i,int j) const; / matrix arithmetic operations /矩阵的算数运算 TriMat AddMat(const TriMat& A) const; double DetMat(void) const;16C+语言程序设计鲁东大学类的声明类的声明 / matrix I/O operations /矩阵的I/O操作 void ReadMat(void); void WriteMat(void) const; / get matrix dimension /取矩阵维数 int GetDimension(void) const;17C+语言程序设计鲁东大学实验任务实验任务l实现这个矩阵类并测试。实现这个矩阵类并测试。18
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号