完整版任意两个高次多项式的加法和乘法运算.docx

上传人:b****1 文档编号:345212 上传时间:2022-10-09 格式:DOCX 页数:24 大小:134.76KB
下载 相关 举报
完整版任意两个高次多项式的加法和乘法运算.docx_第1页
第1页 / 共24页
完整版任意两个高次多项式的加法和乘法运算.docx_第2页
第2页 / 共24页
完整版任意两个高次多项式的加法和乘法运算.docx_第3页
第3页 / 共24页
完整版任意两个高次多项式的加法和乘法运算.docx_第4页
第4页 / 共24页
完整版任意两个高次多项式的加法和乘法运算.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

完整版任意两个高次多项式的加法和乘法运算.docx

《完整版任意两个高次多项式的加法和乘法运算.docx》由会员分享,可在线阅读,更多相关《完整版任意两个高次多项式的加法和乘法运算.docx(24页珍藏版)》请在冰豆网上搜索。

完整版任意两个高次多项式的加法和乘法运算.docx

完整版任意两个高次多项式的加法和乘法运算

西安文理学院软件学院

课程设计报告

设计名称:

数据结构课程设计

设计题目:

任意两个高次多项式的加法和乘法运算

学生学号:

**********

专业班级:

软件工程12级4班

学生姓名:

学生成绩:

指导教师(职称):

课题工作时间:

2014.6.16至2014.6.27

 

说明:

1、报告中的任务书、进度表由指导教师在课程设计开始前填写并发给每个学生。

2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。

3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。

答辩由指导教师实施。

4、报告正文字数一般应不少于3000字,也可由指导教师根据本门综合设计的情况另行规定。

5、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按不及格处理。

 

软件学院课程设计任务书

学生姓名

学号

专业班级

设计题目

任意两个高次多项式的加法和乘法运算

内容概要:

用c++语言及数据结构的思想解决任意两个高次多项式的加法和乘法运算。

数据输入方面可以根据一元高次多项式的特征,从左到右开始,按每一项指数、系数的顺序输入。

运用单链表、动态链表等关键技术,实现所设计的数据结构应尽可能节省存储空间、程序的运行时间应尽可能的少的功能。

开发环境:

VisualC++6.0让同学深入了解C++,掌握C++的功能和数据结构的功能。

文献资料:

[1]韩利凯,李军.数据结构[M].浙江:

浙江大学出版社,2013.

[2]苏仕华.数据结构课程设计[M].北京:

机械工业出版社,2009.

[3]耿国华.数据结构-用C语言描述[M].北京:

高等教育出版社,2011.

[4]严蔚敏,陈文博.数据结构及算法教程[M].北京:

清华大学出版社,2010.

 

设计要求:

设计程序以实现任意两个高次多项式的加法和乘法运算。

(1)所设计的数据结构应尽可能节省存储空间。

(2)程序的运行时间应尽可能的少。

 

工作期限:

设计工作自2014年6月16日至2014年6月27日止。

指导教师:

院长:

日期:

2014年6月16日

软件学院课程设计进度安排表

学生姓名:

学号:

专业:

软件工程班级:

2012级4班

起止日期

内容

备注

6月16日~6月17日

下任务书;收集、阅读、整理相关参考文献,并进行归纳和概括总结,完成项目/任务背景介绍部分文字内容。

6月18日~11月20日

系统功能设计和模块设计、系统体系结构构建。

6月21日~6月24日

各功能模块编码实现,系统各功能模块调试与维护。

6月25日~6月26日

系统功能集成、系统调试与测试,按照模板要求撰写课程设计/项目设计报告。

6月27日

课程设计/项目设计分组答辩,提交课程设计/项目设计报告以及相关文档,进行成绩评定。

指导教师签名:

2014年6月16日

成绩评定表

学生姓名:

学号:

专业:

软件工程班级:

2012级4班

类别

合计

分值

各项分值

评分标准

实际得分

合计得分

平时表现

10

10

按时参加设计指导,无违反纪律情况。

完成情况

30

20

按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。

10

能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。

报告质量

35

10

报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。

5

课题背景介绍清楚,综述分析充分。

5

设计方案合理、可行,论证严谨,逻辑性强,具有说服力。

5

符号统一;图表完备、符合规范要求。

5

能对整个设计过程进行全面的总结,得出有价值的结论或结果。

5

参考文献数量在2篇以上,格式符合要求,在正文中正确引用。

答辩情况

25

10

在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。

15

在规定时间内能准确、完整、流利地回答教师所提出的问题。

 

总评成绩:

指导教师:

(签字)

日期:

2014年6月27日

摘要

摘要:

任意两个高次多项式的加法和乘法运算。

所设计的数据结构应尽可能节省存储空间,程序的运行时间应尽可能少。

在数据输入方面可以根据一元高次多项式的特征,从左到右开始,按每一项指数、系数的顺序输入。

但是相乘的多项式项数是未知的,所以选择什么样的存储方式在本课程设计中尤为重要。

程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在商业中解决实际问题。

关键词:

高次多项式;加法;乘法;存储方式

 

第一章课题背景

1.1需求分析

我们日常生活的开支,大额数字或者多倍小数的计算都需要计算器的帮助。

小学时,你可能拿的是简单的计算器,而高中,这简单的计算器已经满足不了你的需求。

虽然现在的计算器价格比较便宜,各种功能不同,操作不便。

有时你需要的那种功能计算器还不能实现,所以能够通过自己的手设计开发出你所需要的计算程序是非常有意义的。

为方便让你算出任意两个高次多项式的加法和乘法,特编写此程序。

使用该程序之后,所设计的数据结构应尽可能节省存储空间,程序的运行时间应尽可能少。

1.2程序的目的

设计程序以实现任意两个高次多项式的加法和乘法运算。

所设计的数据结构应尽可能节省存储空间,程序的运行时间应尽可能少。

1.3要解决的问题

1.怎样实现两个多项式的乘法?

2.相乘后若有指数相同的项用什么方法合并?

3.使用什么数据结构来满足尽可能节省存储空间的要求?

4.用什么方法来输出表达式?

1.4设计思路

从题目看出所设计的程序应能达到的功能,设计好的程序要满足以上两点。

在数据输入方面可以根据一元高次多项式的特征,从左到右开始,按每一项指数、系数的顺序输入。

这里要留意一个问题,因为要相乘的多项式项数是未知的,所以选择什么样的存储方式在课程设计中尤为重要,这也是本程序好坏的一个评定。

1.5程序运行平台

该程序是用VisualC++6.0制做的,使用VisualC++6.0运行该程序,具体操作是:

打开VisualC++6.0,菜单栏里点文件→打开工作区→找到“cpp1.dsw”这个文件→打开,或者在资源管理器中双击该文件,此时,VC++6.0会自动打开,并载入该系统相关资源。

1.6性能要求

1.系统易操作性

所开发的系统应操作简单,使学生不受电脑水平的限制。

2.系统具有可维护性

由于系统设计的范围较广,数据库中的信息需定期修改,为了使系统运作的更好,可以对系统数据及简单的功能进行简单的维护及调整。

3.该系统能够在开发的硬件系统中运行不会因外部系统的不同面做不同的修改。

 

第二章设计简介及设计方案论述

2.1设计简介

设计题目:

设计程序以实现任意两个高次多项式的加法和乘法运算

目的:

要求熟练掌握C++语言的基本知识和编辑技能;基本掌握结构化程序设计的基本思路和方法;以及数据结构的使用。

要求:

1.所设计的数据结构应尽可能节省存储空间。

2.程序的运行时间应尽可能少。

2.2数据结构的选择

本程序选择的数据结构是单链表,原因如下:

链表的定义:

(1)链表是有限个具有相同数据类型的数据元素的集合,D={ai/i=1,2,…,n};ai为数据元素。

(2)数据元素之间的关系R={/ai,ai+1∈D}。

(3)数据元素ai在存储器中占用任意的、连续或不连续的物理存储区域。

动态链表:

当需要插入数据元素时,临时动态地为其申请一个存储空间,而不是将结点放在一个定义的数组中,删除数据元素时,可以释放该数据元素所占用的空间,即可以根据表的实际需要临时动态的分配存储空间以存储表中的数据元素。

单链表是有限个具有相同数据类型的数据元素组成的链表且该链表的每一个结点只有一个指针域。

带头结点的单链表是在单链表的第一个结点之前加一个同类型的结点,目的是为了使链表有一致的描述。

本程序解决的是两多项式相加和相乘的问题,多项式的项数本身就是不确定的,而且相乘后的多项式可能含有指数相同的问题,这时就需要合并,合并后其中的一项就没有用了需要删除,不然就浪费内存空间。

基于以上几点所以采用了链表。

链表具有动态生成,灵活添加或删除结点的特点,尽可能节省存储空间。

2.3解决方案

1、首先进行需求分析,搞清楚系统功能和任务;

2、然后在总体设计中确定模块结构、划分功能模块,将软件功能需求分配给所划分的最单元模块。

确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略;

3、在详细设计中,为每个模块确定采用的算法,选择适当的工具表达算法的过程(流程图)来描述模块的详细过程。

确定每一模块采用的数据结构和模块接口的细节,对系统内部其他模块的接口

4、根据分析编写C++语言代码。

2.4各程序模块之间的层次(调用)关系

在执行主函数时先调用creat生成要相乘的多项式,存储在两个动态链表中,然后调用print函数输出两个多项式,继续执行相乘函数,相乘后调用置空函数将相乘的链表删除。

然后,检验是否有指数相同的项,如果没有则调用print函数输出结果,否则调执行合并函数将指数项相同的合并,调用print函数输出结果。

2.5用户使用说明

(1)给出任意两个高次多项式,只需按照多项式从左到右依次输入系数值、指数值,当输入指数值为-1时结束。

(由于程序设计的缺陷系数指数都要输入所以结束之前系数值可随便输入不影响运算结果。

(2)程序中指数、系数定义的是整型,所以表达式中系数值、指数值不能超出整型范围。

(3)输入是正数直接输入,负数要加负号。

指数不能选择-1。

 

第三章详细设计

3.1算法思想

算法思想如下:

(1):

首先将两个已知的多项式的指数和系数存放在指定链表中在执行乘法运算。

乘法运算的过程是将f(x)式中的第一项与g(x)式的每一项相乘,在将f(x)式的第二项与g(x)式的每一项相乘,依次下去直到f(x)式的所有项与g(x)式乘完为止。

将相乘后所得的指数、系数存在刚开始建好的F(x)链表中。

(2):

F(x)链表中如果有指数相同的项就需要合并,合并时将结果放在前一个项中,将后一项删除。

这里需要将F(x)链表中的每一项都要对比一遍,这里就要发挥指针的作用了。

首先定义3个指针,x、y、z,x、y指向首元素结点z指向第二个结点,用z结点中指数项与x结点的指数项比较,如果不同指针z向后移,若相同则将z结点的系数加到x上去然后将z所在结点空间释放,并且指针z后移。

直到指针z指向空后,将指针x后移一项,并令z指向x的下一项,然后按上述步骤依次执行,直到x指向空结束。

这里指针y是z的前驱结点他的作用是合并后结点空间释放结点空间将此结点的前后两项链接起来。

本程序核心部分全部是运用while循环语句实现的。

界面通过switch、case等语句来控制的。

3.2下面是针对本程序专门定义的数据结构类型

结点的数据类型如下:

typedefstructnode{//定义节点类型

floatcoef;

intexpn;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1