2.课程设计报告书写规范
课程设计报告包括该题目的需求分析、概要设计、详细设计、程序测试、感想与体会几部分内容。下面以“稀疏矩阵运算器”为例说明如何写课程设计报告。
题目要求:设计一个稀疏矩阵计算器,实现两个稀疏矩阵的加法、减法、乘法以及矩阵的转置运算。采用菜单为应用程序的界面,用户通过对菜单进行选择,分别实现矩阵的相加、相减、相乘以及矩阵转速运算。
2.1需求分析
1. 稀疏矩阵是指稀疏因子小于等于0.5的矩阵。利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器。
2. 以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现矩阵转置,以及两个矩阵的加、减、乘的运算。稀疏矩阵的输入形式采用三元组表示,运算结果以阵列形式列出。
3. 演示程序以用户和计算机的对话方式进行,数组的建立方式为边输入边建立。首先输入矩阵的行数和列数,并判别给出的两个矩阵的行列数是否与所要求的运算相匹配。
4. 程序可以对三元组的输入属性不加以限制;根据对矩阵的行列,三元组作之间插入排序,从而进行运算时,不会产生错误。
5. 在用三元组表示稀疏矩阵时,相加、相减和相乘所产生的结果矩阵另外生成。
6. 运行环境:VC6.0++。
2.2概要设计
稀疏矩阵元素用三元组表示:
typedef struct{
int i; //非零元的行下标
int j; //非零元的列下标
int e; //矩阵非零元
}Triple;
稀疏矩阵采用三元组顺序表存储:
#define MSXSIZE 12500 //假设非零元个数的最大值为200
#define MAXRC 10 //假定矩阵的最大行数为10
typedef struct
{
int mu ; //矩阵的行数
int nu ; //矩阵的列数
int tu ; //矩阵的非零元素个数
Triple data[MAXSIZE+1]; //非零元三元组表,data[0]没有用
int rpos[MAXRC+1]; //各行第一个非零元素的位置表
}Tabletype;
系统主要函数及功能如下:
Menu( ):主控菜单,接收用户的选项;
Input_Matrix( ):输入矩阵;
Print_matrix( ):输出矩阵;
Cal_matrix( ):计算矩阵每行第一个非零元在三元组中的位序号;
TransposeMatrix( ):矩阵转置;
Add_Matrix( ):矩阵加法运算;
Sub_Matrix( ):矩阵减法运算;
Multi_Matrix( ):矩阵乘法运算。
模块的调用关系如图1所示。
图1 程序调用模块
2.3详细设计
1. 主函数设计
/
for (p=1;p< MAXRC+1;p++)
ctemp[p]=0;
c.rpos[arow]=c.tu+1;
if(arow
tp=a.rpos [arow+1];
else
tp=a.tu +1;
for(p=a.rpos[arow]; p
brow=a.data[p].j;
if(brow
t=b.rpos[brow+1];
else
t=b.tu+1;
for (q=b.rpos[brow];q
ccol=b.data[q].j;
ctemp[ccol]+=a.data[p].e*b.data[q].e;
}
}//for p
for(ccol=1;ccol<=c.nu;ccol++)
if(ctemp[ccol])
{
if((c.tu)>MAXSIZE)
exit(1);
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-35162-15.html
好帅啊
说明了什么
这点可以学朝鲜一下下
让女性普便比男性更有钱