- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.稀疏矩阵运算器
数据结构课程设计任务书
针对本课程设计,完成以下课程设计任务:
熟悉系统实现工具和上机环境。
根据课程设计任务,查阅相关资料。
针对所选课题完成以下工作:
需求分析
概要分析
详细设计
编写源程序
静态走查程序和上机调试程序
书写上述文档和撰写课程设计报告。
3.课程设计报告目录
4.正文
(1)问题描述
稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算频率。实现一个能进行稀疏矩阵基本运算的运算器。
(2)需求分析
本课程设计的稀疏矩阵运算器在visual studio 2013下运行调试成功,可以实现的功能有:
1.矩阵运算方式选择
2.根据提示输入相应数据
3.显示最终结果
使用的主要存储结构为三元组,并用三元组形式进行运算。所有参与运算数据类型为整形,因此输入的数据应为整形数据。为了节省存储空间使用三元组数据进行运算,可以通过多次扫描三元组数据来实现,即使用嵌套循环函数。输出结果为通常的阵列形式,因此使用了右对齐,保证输出形式的整齐。
(3)概要分析
本次课程设计中定义的结构体
typedef struct {
int i, j;//矩阵元素所在行列
int v;//元素的值
}triple;
typedef struct {
triple data[MAXSIZE];
triple cop[MAXSIZE];//辅助数组
int m, n, t;//矩阵的行列数
}tripletable;
Main函数调用子函数时输入1为调用
int Push_juzhen(int m, int n, int count)函数,可以实现矩阵相加功能
输入2为调用
int Dec_juzhen(int m, int n, int count)函数,可实现矩阵相减功能
输入3为调用
int Mul_juzhen()函数,可以实现矩阵相乘功能
(4)详细分析(流程图 伪代码)
加法函数
int Push_juzhen(int m, int n, int count)//矩阵相加(行,列,矩阵数)
{
// p行,q列,s非零元素个数,v元素值
//ucount对数组下标计数的变量,与变量x实现多个矩阵相加
for (int c = 0; c count; c++)
{
int x = 0;
cout 请输入第 c + 1 个矩阵???非零元素个数 endl;
cin s;
cout 请依次输入非零元素所在行和列以及该非零元素的值并以空格隔开 endl;
for (; x s; x++)//传递行列及元素值
{
cin p q v;
a.cop[x].i = p;//将p赋值给data[x].i
a.cop[x].j = q;//将q赋值给data[x].j
a.cop[x].v = v;//将v赋值给data[x].v
}
//g行//h列
for (int g = 1; g = m;g++)
for (int h = 1; h = n; h++)
{
int l;//存储下标
for (l = 0; l s; l++)//对辅助存储中的三元组进行行逻辑排序,将数据存入a.data
{
if (a.cop[l].i == ga.cop[l].j == h)
{
a.data[u].i = a.cop[l].i;
a.data[u].j = a.cop[l].j;
a.data[u].v = a.cop[l].v;
u++;
}
}
}
}
//矩阵相加//k为行数//h为列数
for (int k = 0; k u; k++){
for (int h = 0; h = ucount; h++){
if (a.data[k].i == b.data[h].ia.data[k].j == b.data[h].j)//判断行列是否相等
b.data[h].v += a.data[k].v;
else{
b.data[ucount].i = a.data[k].i;
b.data[ucount].j = a.data[k].j;
b.data[ucount].v = a.data[k].v;
ucount++;//存储空间增加计数
}break;//增加一组数据时跳出循环,避免重复计算
}
}
return 0;
}
相减函数
int Dec_juzhen(int m, int n, int co
您可能关注的文档
最近下载
- 国标阀门型号编制方法JBT308-2004.PDF
- 2024年福建省能源石化集团有限责任公司春季校园招聘455人笔试参考题库附带答案详解.pdf
- 76G-3预应力长向圆孔板.pdf
- 数字媒体艺术_梦境主题“梦幻之旅”插画绘本设计.docx VIP
- 演示文稿国际结算的几种方式.ppt VIP
- C被遗弃的少女 das verlassene magdlein声乐正谱五线谱钢琴伴奏.pdf
- 七年级下数学数形结合附答案解析.pdf
- 教科版科学四年级下册 第三单元 岩石与土壤 5 岩石、沙和黏土.ppt VIP
- 软件系统试运行报告.doc VIP
- DLT 284_输电线路杆塔及电力金具用热浸镀锌螺栓与螺母.pdf
文档评论(0)