实习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 8 0 * 0 1 0 = 8 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 70
0 0 0
二、 概要设计
包含的头文件 #include
//非零元的行下标和列下标
ElemType e; //非零元的值
}Triple;
typedef struct
1 0
0 0
0
{
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) //实现矩阵的转置
三、 详细设计
#include
#define MAXSIZE 40 //假设非零元素个数的最大值为40 #define MAXRC 20
typedef int ElemType;
//假设矩阵的最大行数为20
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;
相关推荐: