一元多项式计算器设计与实现

  • 格式:doc
  • 大小:45.50 KB
  • 文档页数:10

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计计划任务书:

针对本课程设计,完成以下课程设计任务,

1.熟系统实现工具和上机环境;

2.根据课程设计任务,查阅相关资料;

3.针对所选课程设计任务完成以下工作:

(1).需求分析;

(2).概要设计;

(3).详细设计;

(4).编写源程序;

(5).静态做查程序和上机调试程序.

4.书写上述文档和撰写课程设计报告.

第一章设计课题

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。输出相加的多项式

用带表头结点的单链表存储多项式。

测试数据:

(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 。

图3.2.1 流程图

第四章详细设计

4.1 程序头的设计:

#include

#include

typedef struct pnode

{int coef;

int exp;

struct pnode *next;

}pnode;

4.2 用头插法生成一个多项式,系数和指数输入0时退出输入pnode * creat()

{int m,n; pnode *head,*rear,*s;

head=(pnode *)malloc(sizeof(pnode));

rear=head;

printf("input coef:");

scanf("%d",&n);

printf("input exp:");

scanf("%d",&m);

while(n!=0)

{s=(pnode *)malloc(sizeof(pnode));

s->coef=n;

s->exp=m;

s->next=NULL;

rear->next=s;

rear=s;

printf("input coef:");

scanf("%d",&n);

printf("input exp:");

scanf("%d",&m);

}

head=head->next;

return head;

}

4.3 显示一个多项式

void display(pnode *head)

{pnode *p;int one_time=1; p=head;

while(p!=NULL)

{

if(one_time==1)

{if(p->exp==0)

printf("%d",p->coef);

else if(p->coef==1||p->coef==-1)

printf("x^%d",p->exp);

else if(p->coef>0)