- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实习4 4.1稀疏矩阵运算器
实习报告
题目:设计一个能实现稀疏矩阵基本运算的运算器。
班级:软件工程11-1 姓名:张艳艳 学号:1101051636 完成日期2012-11-23
需求分析
1.本演示程序中,以“带行逻辑的链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵相加、相减和相乘的运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的表示以阵列形式列出。首先应输入矩阵的行数和列数,并判断给出的两个矩阵的行和列对于所要求的运算是否相匹配。(矩阵的行数和列数均不超过20)
2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据(滤去输入数据中的非法字符)和运算结果显示在其后。
3.程序执行的命令包括:
(1)构造链表;(2)输入数据;(3)数据处理;(4)结束
4.测试数据
(1)10 0 0 0 0 0 10 0 0
0 0 9 + 0 0 -1 = 0 0 8
-1 0 0 1 0 -3 0 0 -3
(2)10 0 0 0 10 0
0 9 - 0 -1 = 0 10
-1 0 1 -3 -2 3
3 0 0
(3)4 -3 0 0 1 4 2 0 0 -6 0
0 0 0 8 0 * 0 1 0 = 8 0 0
0 0 1 0 0 1 0 0 0 1 0
0 0 0 0 70 0 0 0 0 0 0
概要设计
包含的头文件
#includestdio.h
#includemalloc.h
#includestdlib.h
定义结构体以实现矩阵的生成
typedef struct
{
int i,j; //非零元的行下标和列下标
ElemType e; //非零元的值
}Triple;
typedef struct
{
Triple data[MAXSIZE+1];
int rpos[MAXRC+1]; //各行第一个非零元在三元组的位置表
int hs,ls,fls;
}TSMatrix,*Matrix;
void Creat(TSMatrix M) //矩阵的生成算法
void Add(TSMatrix A,TSMatrix B,TSMatrix C,int n) //矩阵的相加与相减运算以n=1或-1来调节加或减
int Multiplication(TSMatrix A,TSMatrix B,TSMatrix Q) //实现矩阵的相乘运算
void Turn(TSMatrix *a,TSMatrix *b) //实现矩阵的转置
详细设计
#includestdio.h
#includemalloc.h
#includestdlib.h
#define MAXSIZE 40 //假设非零元素个数的最大值为40
#define MAXRC 20 //假设矩阵的最大行数为20
typedef int ElemType;
typedef struct
{
int i,j; //非零元的行下标和列下标
ElemType e; //非零元的值
}Triple;
typedef struct
{
Triple data[MAXSIZE+1];
int rpos[MAXRC+1]; //各行第一个非零元在三元组的位置表
int hs,ls,fls;
}TSMatrix,*Matrix;
void Creat(TSMatrix M) //矩阵的生成算法
{
int i,k;
for(i=1;i=MAXRC+1;i++)
M.rpos[i]=0;
printf(请输入矩阵的行数、列数和非零元个数(以空格隔开):);
scanf(%d %d %d,M.hs,M.ls,M.fls);
for(i=1;i=M.fls;i++)
{
printf(请用三元组形式输入矩阵的元素(行 列 非零元
文档评论(0)