一元多项式运算

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

200940410***

学号:

题目一元多项式运算

教学院计算机学院

专业计算机科学与技术

班级09计科(1)班

姓名***

指导教师祁文青

2010 年12 月22 日

目录

1课程设计任务书 (3)

2需求分析 (9)

3概要设计 (10)

总体设计思路 (10)

主函数和子程序 (11)

创建链表 (12)

实现排序 (12)

5 调试报告 (13)

6 改进意见及收获体会 (20)

7 程序清单 (21)

8 主要参考文献 (29)

4.主要参考文献

[1] 谭浩强. C++程序设计[M] . 北京:清华大学出版社,2004.

[2] 吴乃陵.C++程序设计实践教程[M].北京: 高等教育出版社,2003.

[3]

[4]

5.课程设计进度安排

起止日期工作内容

2009年12月27日~31日2007年12月27 日

2007年12月28 日

2007年12月29 日

2007年12月30 日

2007年12月31 日熟悉任务,设计算法,编写源程序上机调试

上机调试

上机调试

上机调试

考核验收

6.成绩考核办法

一元多项式运算

一、需求分析

该程序的主要包括三大功能:加法、减法、乘法。

1、加法:对多项式A(x)和B(x)进行相加运算,并排序;

2、减法:对多项式A(x)和B(x)进行相减运算,并排序;

3、乘法:对多项式A(x)和B(x)进行相乘运算,并排序;

要实现对多项式的运算主要是对式中的系数和指数的运算,每一项都会有系数和指数,将每

项的系数和指数都放入结点中,那么对多项式的运算即为对链表进行操作。

根据程序的功能,建立系统的体系结构,即将整个系统分解成若干子功能模块:

1、createlist 创建链表,把多项式的系数和指数放入结点中,系数为0结束链表的创建;

2、display 输出链表中的系数和指数,以“A(x)= ”的形式输出;

3、heb 查找到同类项后合并同类项;

4、addlist 实现两个链表的合并,并合并同类项,从而对两个多项式相加;

5、minus 多项式的减法运算,将第二个链表中的系数取反后,再调用add_list;

6、chengfa 多项式的乘法运算,将两个链表结点中的系数相乘、指数相加后放入第三个链表,调用heb功能;

7、paixu、daoxu 对运算结束后的链表进行升序和降序;

8、jiemian、主函数main 则是联系各子函数的链,同时也用来制作主界面。

二、概要设计

三、调试报告

(1)程序开始运行,进入通讯录的主菜单,根据操作提示,选择你将进行的操作。

(1)输入1,选择加法运算

(2)输入2,选择减法运算

(3)输入3,选择乘法运算

四、改进意见及收获体会

软件课程设计能够培养我们的动手能力,创新能力,同时使我们对所学知识进一步巩固。为期一周的软件课程设计,我们掌握了如何提出设想,如何调整思路,如何面对困难,如何解决问题。

面对我们的课题实现一元多项式运算,我思考了很久,主要是先进行构思。首先分析了一元多项式,对于每一项都有系数和指数,对一元多项式的运算即对系数和指数的运算。其次,按照要求需要使用单项链表,将每项的系数和指数放入结点,从而创建链表。第三,对链表进行操作,实现多项式的运算。

当创建链表的函数写完,我便思考加法、减法、乘法的算法。我发现三种运算方式虽然不同,但设计思路确是相通的。加法是在先合并链表后再合并同类项而实现的,减法可以在系数取反后用加法实现,乘法运算则是使每个结点相乘后放入第三个链表中,再合并同类项。因此,具体的各个功能可以分开设计,然后再各运算中调用,避免了重复编写,例如程序中的heb 和paixu就是按照这种想法设计的。

在设计界面过程中,我确实花费了不少精力。为了界面美观大方,我查找各种资料寻找有用的界面函数,最终我找到了system(corlor)、system (cls)两个函数,用来实现界面是颜色和清屏。在设置输出图像界面时,通过反复比较、反复更改从而实现了满意的界面。

程序编写完毕,在编译过程中又遇到了非常多的问题。我通过单步调试,反反复复,最终解决了这些问题。

通过三天的努力,我实现了从构思到编程,到各种功能的具体运行,整个过程是艰辛的,也是快乐。

五、程序清单:

#include

#include

#include

typedef struct list1

{int zhishu;

int xishu;

struct list1 *next;

};

typedef struct list1 node;

typedef node *link;

/*****************************************************/

link create_list(link head)

{

link new1;

link pointer;

head=(link)malloc(sizeof(node));

if(head==NULL)

printf("出现错误!\n");

else

{

head->next=NULL;head->zhishu=0;head->xishu=0;

pointer=head;

printf("\n\n");

while(1)

{

new1=(link)malloc(sizeof(node));

printf("\n 系数:");

scanf("%d",&(new1->xishu));

if (new1->xishu==0)

{

printf("\n ******************* 参数已输入完成!*************************\n\n");

free(new1);break;

}

printf(" 输入指数:");

scanf("%d",&(new1->zhishu));

new1->next=NULL;

pointer->next=new1;pointer=new1;

}

}

return head;

}

相关文档
最新文档