一元多项式计算问题课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
长沙学院课程设计说明书
题目一元多项式计算问题系(部) 计算机系
专业(班级) 10级软件D班
姓名向栋良
学号*******D08
指导教师邓旭东
起止日期2011.9.4-2011.9.8
课程设计任务书
课程名称:数据结构与算法
设计题目:一元多项式计算问题
已知技术参数和设计要求:
问题描述:
设计一个稀疏多项式简单计算器
基本要求:
(1)输入并分别建立多项式A和B
(2)输入输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……,其中n是多项式的项数,ci和ei是第i项的系数和指数,序列按指数降序排列
(3)完成两个多项式的相加、相减,并将结果输出;
测试数据:
(1) A+B A= 3x14-8x8+6x2+2 B=2x10+4x8+-6x2
(2) A-B A=11x14+3x10+2x8+10x6+5 B=2x14+3x8+5x6+7
(3) A+B A=x3+x1B=-x3-x1
(4) A+B A=0 B=x7+x5+x3+x1
(5) A-B A=100x100+50x50+20x20+x B=10x100+10x50+10x20+x
选作内容:
(1).多项式在x=1时的运算结果
(2)求多项式A和B的乘积
设计工作量:
40课时
日期节次地点设计方式9月4日(周日)1-4 科1408 讲授内容
9月4日(周日)5-8 科1608 答疑
9月5日(周一)1-4科1408上机调试
9月5日(周一)5-8 科1608 答疑
9月6日(周二)1-4科1408上机调试
9月6日(周二)5-8 科1608 答疑
9月7日(周三)1-4科1408上机调试
9月7日(周三)5-8 科1608 答疑
9月8日(周四)1-4科1608答疑
9月8日(周四)5-8 科1408 答辩
指导教师签名:日期:教研室主任签名:日期:系主任签名:日期:
长沙学院课程设计鉴定表
摘要
本文是关于一个一元稀疏多项式计算器的问题。一元稀疏多项式计算内容包括输入并建立多项式,多项式相加,多项式相减,以及其输出多项式。本程序运用面向对象的设计方法,使用C++语言,利用microsoft visual C++ 6.0开发工具,还有数据结构中学到的链式存储架构,存储一元多项式,从而实现程序的基本功能,在程序中定义了各种类型的运算模块,通过主程序的调用来完成它们之间的配合,从而使程序正确运行。
关键词:数据结构;一元多项式;链表;C++语言
目录
摘要
第一章需求分析 0
1.1 输入的形式和输入值的范围: 0
1.2 输出的形式 0
1.3程序所能达到的功能 0
2.1 设计思路 0
第三章详细设计 (1)
3.1、创建一个结点,表示多项式的一项 (1)
3.2、链式存储多项式 (3)
3.3 、多项式的计算 (4)
3.4、释放结点 (8)
第四章运行界面 (9)
4.1、输入界面如图4-1: (9)
4.3、用户选择功能界面如图4-3 (9)
4.4、各功能运行界面如图4-4: (9)
参考文献 (10)
附录: (11)
源代码; (11)
第一章需求分析
1.1 输入的形式和输入值的范围:
输入是从键盘输入的,输入的内容为多项式的系数和指数,数为任意的整数,指数为大于等于0的整数
1.2 输出的形式
从屏幕输出,显示用户输入的多项式,并显示多项式加减以后的多项式的值。
1.3程序所能达到的功能
a:输入并建立多项式;
b:输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,……,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;
c:多项式a和b相加,建立多项式a+b;
d:多项式a和b相减,建立多项式a-b;
e:多项式的输出形式为类数学表达式。
系数值为1的非零项的输出形式中略去系数1。而-1x的输出形式为-x。
第二章概要设计
2.1 设计思路
A:数据结构的选用
为了实现任意多项式的加法,减法,因此选择单链表的结构体,它有一个系数,指数,下一个指针3个元属;
B:多项式的输入
采用头插法的方式,输入多项式中一个项的系数和指数,就产生一个新的节点,建立起它的右指针,并用头节点指向它;为了判断一个多项式是否输入结束,定义一个结束标志,当输入非0时就继续,当输入0时,就结束一个多项式的输入;
C:2个多项式的加法
它从2个多项式的头部开始,2个多项式的某一项都不为空时,如果指数相等的话,系数就应该相加;相加的和不为0的话,用头插法建立一个新的节点。
p的系数小于q的系数的话,就应该复制q接点到多项式中。p的系数大于q的系数的话,就应该复制p接点到多项式中。当第2个多项式空,第1个数不为空时,将第一个数剩下的全用新节点产生。当第1个多项式空,第1个数不为空时,将第2个数剩下的全用新节点产生
D:2个多项式的减法
它从2个多项式的头部开始,2个多项式的某一项都不为空时,如果指数相等的话,系数就应该相减;相加的和不为0的话,用头插法建立一个新的节点。
p的系数小于q的系数的话,就应该复制q接点到多项式中。p的系数大于q的系数的话,就应该复制p接点到多项式中,并且建立的接点的系数为原来的相反数;当第2个多项式空,第1个数不为空时,将第一个数剩下的全用新节点产生。当第1个多项式空,第1个数不为空时,将第2个数剩下的全用新节点产生,并且建立的接点的系数为原来的相反数。
第三章详细设计
3.1、创建一个结点,表示多项式的一项
pnode create(char *c,int i,int j){
if(j
int a=0,b=0,flag=0;//a系数,b指数,flag指数正负记录。