多项式实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
时间:20100611 专业:09级计算机 学号:09052014 姓名:赖云 【题目】:设一元多项式的一个项可以用整数数组的2个元素来表示:
我们可以利用数组来表示一个多项式。例如多项式:
3x^9-6X^4+2x+7=0 可表示为
设每个一元多项式项数都不会超过十项。 编出程序实现如下功能:
1.在键盘上输入指数ne 和系数nf ,分别生成两个一元多项式HA 和HB ;
2.输出一元多项式HA 和HB;
3.把一元多项式HA 和HB 相加,生成新的一元多项式HC(HC 可能超过十项);
4.输出新形成的一元多项式HC(原HA 、HB 不变);
5.询问“Contine(n)?”,当输入回答字符‘n ’时结束,否则回第1点继续执行。 注意:
(1) 进行多项式相加时,只有该两项的指数相同时才能相加,若相加后系数为0,则
取消该项;
(2) 建立多项式,可以严格按指数从大到小的次序输入,此时,当发现当前项的指数
比前一项的指数大时,则要求重新输入; (3) 若建立多项式时可以不按指数由大到小输入时。则应在输入结束后用程序进行调
整,使数组内多项式各项依指数从大到小次序存放; (4) 在一个多项式中若发现有两项(或两项以上)的指数相等时,应进行合并,或合
并后系数为0则取消该项;
(5) 多项式输出形式:设有多项式3X^8-2X+7,则输出形式为: 3X^8-2X^1+7X^0 或
3X8-2X1+7X0
[进一步要求]:依链表形式,编程实现上述功能。 【解题基本算法】:(1)输入一个多项式HA 生成一条链,输出该多项式HA ;再输入一个多项式HB 生成另一条链,输出该多项式HB; (2)HA 和HB 相加生成HC :
若HA 和HB 均为空,置HC 为0,返回HC ;
若HA 不空,HB 为空,则把HA 复制到HC 中,返回HC ; 若HA 为空,HB 不空;把HB 复制到HC 中,返回HC ;
若HA 和HB 均不空,则分别给HA 、HB 、
HC 初始化:p=HA,q=HB,t=HC;
当HA 和HB 均不空时:
a) 若HA的指针P 所指向的指数与HB的指针q 所指向的指数相等,则令指针p
所指向的系数与q 所指向的系数相加为x:○1若x 为0,则p 、 q 指针分别指向下
一结点;○2若x不为0,则申请一个新结点s,把p所指向的指数赋给s所指向
的指数,把x的值赋给s所指向的系数,然后把s结点写入到HC链的t结点,
然后t、p、q分别指向下一个结点;
b)若HA的指针P所指向的指数大于HB的指针q所指向的指数,则申请生成一
个新结点s,把p所指向的指数和系数赋给s,再把s结点写入HC链的末尾,
然后p、t指针分别向后移一步;
c)若HA的指针P所指向的指数小于HB的指针q所指向的指数,则申请生成一
个新结点s,把p所指向的指数和系数赋给s,再把s结点写入HC链的末尾,
然后q、t指针分别向后移一步;
当HA链被取空时,则把HB链余下部分抄入HC链,返回HC;
当HB链被取空时,则把HA链余下部分抄入HC链,返回HC;
当HA和HB都被取空时,返回空指针;
【主要调试方案:】
○1先输入指数和系数,判断输出的多项式是否正确以测试创建的链表和输出的格式是否正确;
○2输入系数和指数生成两条空链HA和HB,测试相加后输出的HC链是否为空;
○3输入系数和指数分别生成一条空链HA和一条多项式链HB,测试相加后输出的HC链是否为HB链存储的多项式;
○4输入系数和指数分别生成两条非空链HA和HB,测试相加后输出的HC链是否为正确的结果;
【主要测试数据:】
――――――first――――
nenf
89
3-7
0-5
00
―――HA――――
HA=9x^8-7x^3-5 x^0
――――――second――――
nenf
00
―――――HB――――
HB=Error!Thelinkisempty!
――HC=HA+HB――――
HC=9x^8-7x^3-5x^0
Continue?Yes/anykey――No/(Norn):y
――――――first――――
nenf
00
―――――HA――――
HA=Error!Thelinkisempty!
――――――second――――
nenf
89
3-7
0-5
00
―――HB――――
HB=9x^8-7x^3-5 x^0
――HC=HA+HB――――
HC=9x^8-7x^3-5x^0
Continue?Yes/anykey――No/(Norn):y
――――――first――――
nenf
00
―――――HA――――
HA=Error!Thelinkisempty!
――――――second――――
nenf
00
―――――HB――――
HB=Error!Thelinkisempty!
――HC=HA+HB――――
HC=Error!Thelinkisempty!
Continue?Yes/anykey――No/(Norn):y
――――――first――――
nenf
89
3-7
13
0-5
00
―――――HA――――
HA=9x^8-7x^3+3x-5 x^0
――――――second――――
nenf
9-5
56
4-4