教学工作的资源分享

数据结构实系数一元多项式运算实验报告解读

教育信息化2.0行动计划

教育信息化2.0行动计划

实系数一元多项式问题实验报告

2010级计算机科学与技术(非师范) )。100704033鲁静

2011年10月14日星期五1、需求分析

实现实系数一元多项式的建立、打印及两个一元多项式的加、减、乘。)1)程序可实现的功能:a .实现一元多项式的输入b .实现一元多项式的输出

c .计算两个一元多项式的和,并输出结果d .计算两个一元多项式的差,并输出结果e .计算两个一元多项式的乘积,并输出结果(2)输入形式和输入值范围:输入要求:在分行输入,每行输入一个项目,输入多项式指数,然后输入多项式系数,以0作为结束标志结束多项式输入。输入格式:2 3

-1 23 01 20 0-2 1-3 3-1 -10 0

输入值范围:系数为int型,指数为float型。)3)输出格式:请求:第一行输出多项式1;第二行输出多项式2;

将第3行输出多项式1和多项式2相加后的结果多项式;减去第4行输出多项式1和多项式2后的结果多项式;第五行的输出多项式1和多项式2相乘的结果多项式注:注意多项式的各项例如为2.0x^3,指数保留小数位;多项式按幂顺序排列;系数为1的非零次项省略系数,系数为0的项不出现在结果中;指数为0的项只输出系数;

如果多项式第一项的系数符号为正,则不要输出“”。 其他项目请输出“'、“-”符号。输出格式:3.0 2.0x^3

-x^-1-2.0x-3.0x^3-x^-1 3.0-2.0x-x^3x^-1 3.0 2.0x 5.0x^3- 3.0x ^-1-6.0x-2.0x ^2- 9.0x ^3- 4.0x ^4- 6.0x ^ 62、概要设计抽象数据类型的一元多项式定义如下:ADT Polynomial{

数据对象: D={ai| ai TermSet,I=1,2,m,m0TermSet的每个元素都包含表示系数的实数和表示指数的整数}

数据关系: R1={ ai-1,ai | ai-1,ai D,且ai-1中指数值<; ai中的指数值,i=2,n}基本操作: sort(Polynh ); //对多项式进行排序打印(polynh ); //输出多项式

delzerocoef(Polynh ); //判断系数为零时合并(polynh ); //合并指数相同的项创建列表(; //创建多项式

addPoly(PolynH1,Polyn h2 ); //多项式加法subpoly(PolynH1,Polyn h2 ); //多项式减法多点(Polyn h2,Polyn h2 );

教育信息化工作管理系统

教育信息化工作管理系统

typedef struct Polynomial //节点类型{浮芯; //系数

int exp; //指数

struct Polynomial * next;}PolyNode,*Polyn;主程序流程图:3、详细设计伪代码算法:主函数:

int main () ){

Polyn h1=createList (; //创建多项式1Polyn h2=createList (; //构造多项式2print(H1; //输出多项式1print(H2; //输出多项式2

addPoly(H1,h2 ); //实现多项式1和2的加法并输出subpoly(H1,h2 ); //实现多项式1和2的减法输出多点(h1,h2 ); //实现多项式1和2的乘法运算并输出返回0;}

分支函数:

voidsort(Polynh ); //排序voidprint(Polynh ); //输出多项式voiddelzerocoef(Polynh; //判断为处理系数为0时语音合并(polynh ); //合并多项式Polyn createList (; //创建多项式

voidaddpoly(polynH1,Polyn h2 ); //将两个多项式相加后输出voidsubpoly(polynH1,Polyn h2 );//减去两个多项式后输出voidmultpoly(polynH1,Polyn h2 );//将两个多项式相乘后输出函数调用关系:4、调试分析

a .对调试中遇到的问题是如何解决的以及设计和实现的回顾性讨论和分析:输入“0,3”、“2,0”等时,程序无法正常运行或始终出现错误。

解决:如果指数或系数为0,则必须单独考虑。 因此,建立了delZeroCoef函数解决了问题。b .算法时空分析,包括基本操作和其他算法的时间复杂度和空间复杂度分析)和改进思路:时间和空间复杂性:

假设两个多项式分别用m、n表示,t (表示时间复杂度,o )表示空间复杂度,则为:sort(Polynh ):t(m*m ),t ) n*n ); o(m ),o ) n )。

教学诊改

教学诊改

o(1),o )。Elzerocoef(Polynh ):t ) m )、t ) n ); o(1),o )。merge(Polynh ):t(m*m ),t ) n*n ); o(1),o )。createList ():t(m ),t ) ) n; o(1),o )。addpoly(polynH1,Polyn h2 ):t(m ),t ) n; o(1),o )。subpoly(polynH1,Polyn h2 ):t(m ),t ) n; o(1),o )。multpoly(polynH1,Polyn h2 ):t(m ),t ) n; o(1),o )。愿景改进:在原基础上改进程序,设计新算法,可以尽量减少时间复杂度和空间复杂度。c .经验和体会:

1 .这次使用链表解决问题对我来说带来了很大的成果。 熟悉链表的构建,更准确地掌握了链表的前进。 在调试、验证代码时,遇到了很大的障碍,但解决问题后,自己也取得了很多成果。2 .通过这次实验,我发现自己分析问题不够,很容易忽略一些细节。 以后分析问题的时候,要仔细考虑认真分析,避免细节上的错误。3 .在设计该算法时,过于依赖书的实例,由于生成链表时的指针设置,导致之后在应用相关的指针时指针无法很好地移动,产生数据的重复输出和系统缺省值的输出。5、测试数据和测试结果第一组数据:输入:

2 43 21 52 30 05 32 36 53 67 44 80 0输出:3.0x^2 2.0x^3 2.0x^4 x^5

7.0x^3 7.0x^4 6.0x^5 3.0x^6 4.0x^8

3.0x ^ 29.0 x ^ 39.0 x ^ 47.0 x ^ 53.0 x ^ 64.0 x ^ 83.0x ^2- 5.0x ^3- 5.0x ^4- 5.0x ^5- 3.0x ^6- 4.0x ^ 821.0 x ^ 535.0 x ^ 646.0 x ^ 742.0 x ^ 825.0 x ^ 924.0 x ^ 1011.0 x ^ 118.0 x ^ 124.0 x ^ 13Press any key to continue第二组数据:输入:

4 60 43 35 24 10 02 03 53 64 70 0输出:

4.0x 5.0x^2 3.0x^3 4.0x^62.0 3.0x^5 3.0x^6 4.0x^7

2.04.0 x 5.0x ^ 23.0 x ^ 33.0 x ^ 57.0 x ^ 64.0 x ^ 7-2. 04.0 x 5.0x ^ 23.0x ^3- 3.0x ^ 5x ^6- 4.0x ^ 78.0x 10.0 x ^ 26.0 x ^ 320.0 x ^ 627.0 x ^ 740.0 x ^ 829.0 x ^ 912.0 x ^ 1012.0 x ^ 1112.0 x ^ 1216.0 x ^ 13Press any key to continue第三组数据:输入:

-2 12 -33 09 57 -40 0

-6 50 8

5 -6-3 49 00 0输出:

7.0x^-4 2.0x^-3 3.0-2.0x 9.0x^55.0x^-6 9.0-3.0x^4-6.0x^5

5.0x ^-67.0 x ^-42.0 x ^-312.0-2.0x-3.0x ^ 43.0 x ^ 5- 5.0x ^-67.0 x ^-42.0 x ^-3-6.0-2.0x 3.0x ^ 415.0 x ^ 535.0 x ^-1010.0 x ^-915.0 x ^-6-10.0 x ^-563.0 x ^-418.0 x ^-345.0 x-16.0 x-12.0 x ^-2-9.0x ^-469.0 x ^Press any key to continue第四组数据:输入:

3 -9-7 8-2 -47 80 3

-1 00 0

2 -3-4 31 00 -50 0输出:

3.0x ^-9-2.0x ^-4-2.0x ^-3-2.04.0x ^ 3

6.0x ^-123.0 x ^-9-4.0x ^-7-12.0x ^-6-2.0x ^-4-2.0x ^-38.0x ^-1-1.0.0x ^-3Press any key to continue第五组数据:输入:

1 -1-1 10 01 -1-1 -10 0输出:

x^-1-x0

x^-1-xx^-1-x0

Press any key to continue

随机看看

NEW ARTICLE

标签

Tag