一元多项式运算课程设计文档格式.docx
《一元多项式运算课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《一元多项式运算课程设计文档格式.docx(20页珍藏版)》请在冰点文库上搜索。
七、程序运行结果:
一元多项式输入界面
加法运算
减法运算
乘法运算
输出
八、体会和总结:
课程设计终于做完了,尽管有些疲劳和困倦,但带给我很多的收成。
数绝结构已经学了一个学期,可能三个多月了,有许多知识都存在似懂非懂的现象,这种现象通过实际的上机操作,实际应用,已经减少了许多。
对这些知识也有了更深的明白得和专门好的把握。
许多困惑,有许多已经通过实际操作解决了,并能够深刻熟悉,但也有很多没有明白。
通过课程设计,明白到了原先开发一个小小的有效系统,是需要考虑到很多方面的问题的,这些都是要在实践中试探的,这与平常做练习是不同的,但也因为平常有许多的练习基础,会使你做启程序来,加倍驾轻就熟。
另外确实是要把错误总结,有许多错误或陷阱是平常自己陷进去的,因此很深刻,但也有些错误或陷阱是自己尚未接触或犯过的,这就应该看多些他人的总结,使自己不犯这些错误。
不让自己掉进这些陷阱。
如此长期总结,会对自己有专门大的帮忙。
附录:
程序源代码#include<
iostream>
#include<
>
usingnamespacestd;
structNode
{floatcoef;
xp=-1;
oef;
cout<
<
"
指数:
;
cin>
(newp->
data).exp;
if(newp->
0)
{
您输入有误,指数不许诺为负值!
endl;
deletenewp;
i--;
continue;
}
newp->
next=NULL;
p=L;
==0)
系数为零,从头输入!
while((p->
next!
=NULL)&
&
((p->
next->
data).exp<
data).exp))
p=p->
next;
oef>
{
if((p->
data).exp==0)
(p->
data).coef;
elseif((p->
data).coef==1&
data).exp==1)
x"
data).exp!
=1)
x^"
data).exp==1&
data).coef!
data).coef<
elsecout<
oef<
elseif(p->
==-1&
p->
==1)
-x"
!
-x^"
while(p!
=NULL)
data).coef>
data).exp==0)
+"
=1)
data).coef==1)
}
cout<
/*把一个链表的内容复制给另一个链表*/
voidCopyLink(Link&
pc,Linkpa)
{
Linkp,q,r;
pc=newLNode;
pc->
r=pc;
p=pa;
while(p->
q=newLNode;
q->
=p->
r->
next=q;
r=q;
/*将两个一元多项式相加*/
voidPolyAdd(Link&
pc,Linkpa,Linkpb)
{
Linkp1,p2,p,pd;
CopyLink(p1,pa);
CopyLink(p2,pb);
p=pc;
p1=p1->
p2=p2->
while(p1!
=NULL&
p2!
if(p1->
p2->
p->
next=p1;
p1=p1->
elseif(p1->
next=p2;
p2=p2->
else
p1->
=p1->
+p2->
=0)
pd=p1;
deletepd;
if(p1!
if(p2!
/*将两个多项式相减*/
voidPolySubstract(Link&
Linkp,pt;
CopyLink(pt,pb);
p=pt;
while(p!
(p->
data).coef=(-(p->
data).coef);
PolyAdd(pc,pa,pt);
DestroyLink(pt);
//清屏函数
voidClear()
system("
pause"
);
cls"
/*将两个一元多项式相乘*/
voidPolyMultiply(Link&
Linkp1,p2,p,pd,newp,t;
p1=pa->
p2=pb->
pd=newLNode;
pd->
p=newLNode;
t=p;
while(p2)
newp=newLNode;
*p2->
t->
next=newp;
t=t->
PolyAdd(pd,pc,p);
CopyLink(pc,pd);
p2=pb->
DestroyLink(p);
DestroyLink(pd);
//菜单函数
voidMenu()
\t╔════════════一元多项式的运算══════════╗"
\t║\t\t\t\t\t\t\t║"
\t║\t\t\t①新建\t\t\t║"
\t║\t\t\t②加法运算\t\t\t║"
\t║\t\t\t③减法运算\t\t\t║"
\t║\t\t\t④相乘运算\t\t\t║"
\t║\t\t\t⑤输出\t\t\t║"
\t║\t\t\t⑥清空\t\t\t║"
\t║\t\t\t⑦退出\t\t\t║"
\t╚══════════════════════════════╝"
\t\t\t\t请选择:
//判定输入的整数是不是为1到7的数字
intCompareIfNum(inti)
if(i>
0&
i<
8)
return0;
elsereturn1;
voidmain()
color4"
//system("
colorE"
intn;
LinkL,La=NULL,Lb=NULL;
//La,Lb别离为创建的两个多项式
intchoose;
while
(1)
Menu();
//挪用菜单函数
choose;
switch(choose)
case1:
请输入需要运算的第一个一元多项式的项数:
n;
if(CompareIfNum(n)==1)
输入有误,请从头输入……"
Clear();
break;
CreateLink(La,n);
请输入需要运算的第二个一元多项式的项数:
CreateLink(Lb,n);
case2:
if(La==NULL||Lb==NULL)
多项式创建错误,请从头选择……"
PolyAdd(L,La,Lb);
待相加的两个一元多项式为:
A的多项式为:
PrintList(La);
B的多项式为:
PrintList(Lb);
相加后的结果为:
PrintList(L);
DestroyLink(L);
case3:
PolySubstract(L,La,Lb);
相减的两个一元多项式为:
相减后的结果为:
case4:
PolyMultiply(L,La,Lb);
相乘的两个一元多项式为:
相乘后的结果为:
PrintList(L);
DestroyLink(L);
case5:
一元多项式A为:
一元多项式B为:
case6:
if(La&
Lb)
DestroyLink(La);
DestroyLink(Lb);
多项式销毁成功!
else
多项式不存在,请从头选择^^^"
case7:
exit(0);
//exit(0)强制终止程序,返回状态码0表示正常终止
default:
输入错误,请从头选择操作……"