一元稀疏多项式计算器.doc

一章 设计课题 1.1 设计目的 设计一元稀疏多项式简单计数器: 1.2 基本功能要求 功能要求如下: 1.输入并建立多项式; 2.输出多项式,输出形式为整数序列n,c1,e1,c2,e2,……,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列; 3.多项式a和b相加,建立多项式a+b; 输出相加的多项式 4.多项式a和b相减,建立多项式a-b。输出相加的多项式 5.对多项式进行求导 用带表头结点的单链表存储多项式。 测试数据: (1)(2x+5x8-3.1x11)+ (7-5x8+7.8x15) (2) (6x-3-x+4.4x2-1.2x9) – (-6x-3+5.4x2+7.8x15) 第二章 需求分析 2.1 输入的形式和输入值的范围: 输入是从键盘输入的,输入的内容为多项式的系数和指数,数为任意的整数,指数为大于等于0的整数 2.2 输出的形式 从屏幕输出,显示用户输入的多项式,并显示多项式加减以后的多项式的值。 2.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。 第三章 概要设计 3.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.2 流程图,如图3.2.1 。 运行程序 选择2 选择3 选择1 输入第一个多项式 输入第一个多项式 输入第二个多项式 输入第二个多项式 退出程序 两多项式相加 两多项式相减 图3.2.1 流程图 第四章 详细设计 4.1 程序头的设计: #includestdio.h #includemalloc.h typedef struct pnode {float coef;/*系数 */ int exp;/*指数 */ struct pnode *next;/*下一个指针*/ }pnode; 4.2 用头插法生成一个多项式,系数和指数输入0时退出输入 pnode * creat() {int m;float n; pnode *head,*rear,*s; /*head为头指针,rear和s为临时指针*/ head=(pnode *)malloc(sizeof(pnode)); rear=head; /*指向头*/ printf(input coef:);/*输入系数*/ scanf(%f,n); printf(input exp:);/*输入指数*/ scanf(%d,m); while(n!=0)/*输入0就退出*/ {s=(pnode *)malloc(sizeof(pnode)); s-coef=n; s-exp=m; s-next=

文档评论(0)

1亿VIP精品文档

相关文档