一元多项式运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
}