logo资料库

数据结构--稀疏矩阵课程设计.doc

第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
资料共16页,剩余部分请下载后查看
1 问题描述
2 需求分析
3 总体设计
3.1 Matrix结构的定义
3.2 系统流程图
4 详细设计
4.1 “菜单”界面
4.2 建立矩阵
4.3 显示矩阵
4.4 矩阵的转置
4.5 矩阵的加法运算
4.6 矩阵的减法运算
4.7 矩阵的乘法运算
5 程序运行
5.1 输入矩阵
5.2 矩阵转置
5.3 矩阵加法
5.4 矩阵减法
5.5 矩阵乘法
5.6 退出及错误提示
6 总结
参考文献
数 据 结 构 课 程 设 计 说 明 书 目 录 1 问题描述 ............................................... 1 2 需求分析 ............................................... 1 3 总体设计 ............................................... 2 3.1 Matrix 结构的定义 ..................................2 3.2 系统流程图 ........................................ 3 4 详细设计 ............................................... 4 4.1 “菜单”界面 ...................................... 4 4.2 建立矩阵 .......................................... 4 4.3 显示矩阵 .......................................... 6 4.4 矩阵的转置 ........................................ 7 4.5 矩阵的加法运算 .................................... 8 4.6 矩阵的减法运算 .................................... 9 4.7 矩阵的乘法运算 .................................... 9 5 程序运行 .............................................. 11 5.1 输入矩阵 ......................................... 11 5.2 矩阵转置 ......................................... 11 5.3 矩阵加法 ......................................... 12 I
5.4 矩阵减法 ......................................... 12 5.5 矩阵乘法 ......................................... 12 5.6 退出及错误提示 ................................... 13 6 总结 .................................................. 13 参考文献 ................................................ 14 II
1 问题描述 (1) 题目内容:设计稀疏矩阵运算系统实现两个稀疏矩阵的加法、减法、乘法以 及转置操作。 (2) 基本要求: 1 存储结构选择三元组存储方式; 2 实现一个稀疏矩阵的转置运算; 3 实现两个稀疏矩阵的加法运算; 4 实现两个稀疏矩阵的减法运算; 5 实现两个稀疏矩阵的乘法运算。 (3) 设计目的:通过本次课程设计,了解稀疏矩阵的一些基本运算操作,并通过 相关的程序代码实现。 2 需求分析 经过本次的课程设计,我认为稀疏矩阵运算系统主要实现的功能如下: (1) 建立矩阵:只有先建立了矩阵,才能够对矩阵进行运算操作,包括建立矩阵 A 和矩阵 B; (2) 转置运算操作:对矩阵 A 或者矩阵 B 进行转置运算,输出相应的转置矩阵; (3) 四则运算操作:该步骤由两个矩阵同时参与,对其进行加法运算(A+B)、减 法运算(A-B)以及乘法运算(A*B 和 B*A); (4) 退出:当做完矩阵的运算操作之后,就可以点击它退出该界面。 在这次设计中用到了一些变量和函数,例如:void Display(Matrix M);int Max(int i,int j);Matrix Zero(Matrix M)等,下面会做进一步详细的介绍。 1
3 总体设计 3.1 Matrix 结构的定义 struct Matrix{ int H; //矩阵的行数 int L; //矩阵的列数 int fly; //矩阵中的非零元个数 int zhi[Maxsize][Maxsize];//非零元值[所在行][所在列] }; 操作集合: (1) Matrix Enter(Matrix M); //建立矩阵 M (2) void Display(Matrix M); //显示矩阵 M (3) void Transpose(Matrix M); //M 矩阵的转置 (4) void Add(Matrix M,Matrix N); //求和运算 A+B (5) void Sub(Matrix M,Matrix N); //求差运算 A-B (5) void Multi(Matrix M,Matrix N); //求积运算 A*B (6) int Max(int i,int j); //求最大值 (7) Matrix Zero(Matrix M); //矩阵所有元素赋值为 0 2
3.2 系统流程图 该运算系统的系统流程图如图 1 所示: 稀疏矩阵运算系统 输入矩阵 A 输入矩阵 B A + B A-B A * B B *A 矩 阵 B 的 转 置 矩 阵 A 的 转 置 退 出 图 1 系统流程图 3
4 详细设计 4.1 “菜单”界面 进入稀疏矩阵运算系统后的“菜单”界面如图 2 所示。 图 2 “菜单”界面 4.2 建立矩阵 矩阵在建立之后才能够进行运算操作,建立矩阵 A 和矩阵 B,调用函数 Enter(M),首先根据所输入的矩阵 M 的行数 H 和列数 L,建立 H*L 的矩阵 M, 并且调用函数 Zero(M)将其所有元素均赋值为 0;其次再根据所输入矩阵 M 的非零元个数 fly 做循环控制变量,按提示输入非零元所在的行 h 和列 l 以 及非零元的值,如果输入的行 h 或者列 l 大于矩阵 M 的行 H 或列 L,则提示 输入错误;最后将非零元的值保存在矩阵 M 中的相应位置。程序如下: Matrix Enter(Matrix M) //建立矩阵 { 4
cout<<"请输入矩阵的行数和列数:"; cin>>M.H>>M.L; cout<<"请输入矩阵的非零元个数:"; cin>>M.fly; cout<(M.H*M.L)) { } cout<<"非零元个数多于矩阵元素总数,请重新输入!"<>M.fly; M=Zero(M); int h; int l; for(int n=1;n<=M.fly;n++) //输入非零元所在的行、列和值 { cout<<"请输入第"<>h>>l; if(h>M.H||l>M.L) // 行列输入错误提示 { } cout<<"行列输入错误,请重新输入:"<>h>>l; 5
cout<<"请输入该非零元的值:"; cin>>M.zhi[h][l]; cout<
分享到:
收藏