一元多项式运算课程设计.docx

上传人:b****7 文档编号:10315539 上传时间:2023-02-10 格式:DOCX 页数:20 大小:334.02KB
下载 相关 举报
一元多项式运算课程设计.docx_第1页
第1页 / 共20页
一元多项式运算课程设计.docx_第2页
第2页 / 共20页
一元多项式运算课程设计.docx_第3页
第3页 / 共20页
一元多项式运算课程设计.docx_第4页
第4页 / 共20页
一元多项式运算课程设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

一元多项式运算课程设计.docx

《一元多项式运算课程设计.docx》由会员分享,可在线阅读,更多相关《一元多项式运算课程设计.docx(20页珍藏版)》请在冰豆网上搜索。

一元多项式运算课程设计.docx

一元多项式运算课程设计

每组人数1实验机械编号

日期2009年6月22日实验室名称WM2301机房

一、课程设计题目:

一元多项式运算

二、设计内容:

用C++语言编写一段程序,该程序的功能相当于一个一元多项式计算器。

它能够实现依照指数降序排列成立并输出多项式,而且能够完成两个多项式的相加、相减的运算和将其结果输入的功能。

 

三、设计实现:

1.依照输入创建一元多项式,并用链表实现存储。

2.对已创建的的两个一元多项式进行运算,该题目要实现的运算有,一元多项式加法、减法、乘法运算。

3.一次运算完成实现链表清空操作,可同意用户从头输入。

 

三、要紧模块:

1.一元多项式的成立。

2.显示一元多项式。

3.一元多项式加法运算。

4.一元多项式减法运算。

5.一元多项式乘法运算。

6.一元多项式清空。

 

四、程序设计思想:

要紧内容是对一元多项式存储结构的选择,输入多项式采纳头插法的方式,输入多项式中一个项的系数和指数,就产生一个新的节点,成立起它的右指针,并用头节点指向它;尽管一元多项式能够用顺序和链式两种存储结构表示,但顺序结构的最大长度很难确信。

比如当多项式的系数较大时,现在就会浪费了庞大的存储空间,因此应该选择用链式存储结构来存储一元多项式。

单链表的结构体能够用来存储多项式的系数,指数,如此便于实现任意多项式的运算。

 

五、主程序流程图:

六、程序主界面:

七、程序运行结果:

一元多项式输入界面

加法运算

减法运算

乘法运算

输出

八、体会和总结:

课程设计终于做完了,尽管有些疲劳和困倦,但带给我很多的收成。

数绝结构已经学了一个学期,可能三个多月了,有许多知识都存在似懂非懂的现象,这种现象通过实际的上机操作,实际应用,已经减少了许多。

对这些知识也有了更深的明白得和专门好的把握。

许多困惑,有许多已经通过实际操作解决了,并能够深刻熟悉,但也有很多没有明白。

通过课程设计,明白到了原先开发一个小小的有效系统,是需要考虑到很多方面的问题的,这些都是要在实践中试探的,这与平常做练习是不同的,但也因为平常有许多的练习基础,会使你做启程序来,加倍驾轻就熟。

另外确实是要把错误总结,有许多错误或陷阱是平常自己陷进去的,因此很深刻,但也有些错误或陷阱是自己尚未接触或犯过的,这就应该看多些他人的总结,使自己不犯这些错误。

不让自己掉进这些陷阱。

如此长期总结,会对自己有专门大的帮忙。

附录:

程序源代码#include

#include<>

#include<>

usingnamespacestd;

structNode

{floatcoef;xp=-1;oef;

cout<<"指数:

";

cin>>(newp->data).exp;

if(newp-><0)

{

cout<<"您输入有误,指数不许诺为负值!

"<

deletenewp;

i--;

continue;

}

newp->next=NULL;

p=L;

if(newp->==0)

{

cout<<"系数为零,从头输入!

"<

deletenewp;

i--;

continue;

}

while((p->next!

=NULL)&&((p->next->data).exp<(newp->data).exp))

{

p=p->next;oef>0)

{

if((p->data).exp==0)

cout<<(p->data).coef;

elseif((p->data).coef==1&&(p->data).exp==1)

cout<<"x";

elseif((p->data).coef==1&&(p->data).exp!

=1)

cout<<"x^"<<(p->data).exp;

elseif((p->data).exp==1&&(p->data).coef!

=1)

cout<<(p->data).coef<<"x";

elsecout<<(p->data).coef<<"x^"<<(p->data).exp;

}

oef<0)

{

if((p->data).exp==0)

cout<<(p->data).coef;

elseif(p->==-1&&p->==1)

cout<<"-x";

elseif(p->==-1&&p->!

=1)

cout<<"-x^"<;

elseif(p->==1)

cout<<<"x";

elsecout<<(p->data).coef<<"x^"<<(p->data).exp;

}

p=p->next;

while(p!

=NULL)

{

if((p->data).coef>0)

{

if((p->data).exp==0)

cout<<"+"<<(p->data).coef;

elseif((p->data).exp==1&&(p->data).coef!

=1)

cout<<"+"<<(p->data).coef<<"x";

elseif((p->data).exp==1&&(p->data).coef==1)

cout<<"+"<<"x";

elseif((p->data).coef==1&&(p->data).exp!

=1)

cout<<"+"<<"x^"<<(p->data).exp;

elsecout<<"+"<<(p->data).coef<<"x^"<<(p->data).exp;

}

if((p->data).coef<0)

{

if((p->data).exp==0)

cout<<(p->data).coef;

elseif(p->==-1&&p->==1)

cout<<"-x";

elseif(p->==-1&&p->!

=1)

cout<<"-x^"<;

elseif(p->==1)

cout<<<"x";

elsecout<<(p->data).coef<<"x^"<<(p->data).exp;

}

p=p->next;

}

}

cout<

}

/*把一个链表的内容复制给另一个链表*/

voidCopyLink(Link&pc,Linkpa)

{

Linkp,q,r;

pc=newLNode;

pc->next=NULL;

r=pc;

p=pa;

while(p->next!

=NULL)

{

q=newLNode;

q->=p->next->;

q->=p->next->;

r->next=q;

q->next=NULL;

r=q;

p=p->next;

}

}

 

/*将两个一元多项式相加*/

voidPolyAdd(Link&pc,Linkpa,Linkpb)

{

Linkp1,p2,p,pd;

CopyLink(p1,pa);

CopyLink(p2,pb);

pc=newLNode;

pc->next=NULL;

p=pc;

p1=p1->next;

p2=p2->next;

while(p1!

=NULL&&p2!

=NULL)

{

if(p1->

{

p->next=p1;

p=p->next;

p1=p1->next;

}

elseif(p1->>p2->

{

p->next=p2;

p=p->next;

p2=p2->next;

}

else

{

p1->=p1->+p2->;

if(p1->!

=0)

{

p->next=p1;

p=p->next;

p1=p1->next;

p2=p2->next;

}

else

{

pd=p1;

p1=p1->next;

p2=p2->next;

deletepd;

}

}

}

if(p1!

=NULL)

{

p->next=p1;

}

if(p2!

=NULL)

{

p->next=p2;

}

}

/*将两个多项式相减*/

voidPolySubstract(Link&pc,Linkpa,Linkpb)

{

Linkp,pt;

CopyLink(pt,pb);

p=pt;

while(p!

=NULL)

{

(p->data).coef=(-(p->data).coef);

p=p->next;

}

PolyAdd(pc,pa,pt);

DestroyLink(pt);

}

//清屏函数

voidClear()

{

system("pause");

system("cls");

}

/*将两个一元多项式相乘*/

voidPolyMultiply(Link&pc,Linkpa,Linkpb)

{

Linkp1,p2,p,pd,newp,t;

pc=newLNode;

pc->next=NULL;

p1=pa->next;

p2=pb->next;

while(p1!

=NULL)

{

pd=newLNode;

pd->next=NULL;

p=newLNode;

p->next=NULL;

t=p;

while(p2)

{

newp=newLNode;

newp->next=NULL;

newp->=p1->*p2->;

newp->=p1->+p2->;

t->next=newp;

t=t->next;

p2=p2->next;

}

PolyAdd(pd,pc,p);

CopyLink(pc,pd);

p1=p1->next;

p2=pb->next;

DestroyLink(p);

DestroyLink(pd);

}

}

//菜单函数

voidMenu()

{

cout<<""<

cout<

cout<<"\t╔════════════一元多项式的运算══════════╗"<

cout<<"\t║\t\t\t\t\t\t\t║"<

cout<<"\t║\t\t\t①新建\t\t\t║"<

cout<<"\t║\t\t\t②加法运算\t\t\t║"<

cout<<"\t║\t\t\t③减法运算\t\t\t║"<

cout<<"\t║\t\t\t④相乘运算\t\t\t║"<

cout<<"\t║\t\t\t⑤输出\t\t\t║"<

cout<<"\t║\t\t\t⑥清空\t\t\t║"<

cout<<"\t║\t\t\t⑦退出\t\t\t║"<

cout<<"\t║\t\t\t\t\t\t\t║"<

cout<<"\t╚══════════════════════════════╝"<

cout<<"\t\t\t\t请选择:

";

}

//判定输入的整数是不是为1到7的数字

intCompareIfNum(inti)

{

if(i>0&&i<8)

return0;

elsereturn1;

}

voidmain()

{

{

system("color4");

//system("pause");

system("colorE");

//system("pause");

}

intn;

LinkL,La=NULL,Lb=NULL;//La,Lb别离为创建的两个多项式

intchoose;

while

(1)

{

Menu();//挪用菜单函数

cin>>choose;

switch(choose)

{

case1:

cout<<"请输入需要运算的第一个一元多项式的项数:

"<

cin>>n;

if(CompareIfNum(n)==1)

{

cout<<"输入有误,请从头输入……"<

Clear();

break;

}

CreateLink(La,n);

cout<<"请输入需要运算的第二个一元多项式的项数:

"<

cin>>n;

if(CompareIfNum(n)==1)

{

cout<<"输入有误,请从头输入……"<

Clear();

break;

}

CreateLink(Lb,n);

Clear();

break;

case2:

if(La==NULL||Lb==NULL)

{

cout<<"多项式创建错误,请从头选择……"<

Clear();

break;

}

PolyAdd(L,La,Lb);

cout<<""<

cout<<"待相加的两个一元多项式为:

"<

cout<<""<

cout<<"A的多项式为:

";

PrintList(La);

cout<<""<

cout<<"B的多项式为:

";

PrintList(Lb);

cout<<""<

cout<<"相加后的结果为:

";

PrintList(L);

cout<<""<

Clear();

DestroyLink(L);

break;

case3:

if(La==NULL||Lb==NULL)

{

cout<<"多项式创建错误,请从头选择……"<

Clear();

break;

}

PolySubstract(L,La,Lb);

cout<<"相减的两个一元多项式为:

"<

cout<<""<

cout<<"A的多项式为:

";

PrintList(La);

cout<<""<

cout<<"B的多项式为:

";

PrintList(Lb);

cout<<""<

cout<<"相减后的结果为:

";

PrintList(L);

cout<<""<

Clear();

DestroyLink(L);

break;

case4:

if(La==NULL||Lb==NULL)

{

cout<<"多项式创建错误,请从头选择……"<

Clear();

break;

}

PolyMultiply(L,La,Lb);

cout<<"相乘的两个一元多项式为:

"<

cout<<""<

cout<<"A的多项式为:

";

PrintList(La);

cout<<""<

cout<<"B的多项式为:

";

PrintList(Lb);

cout<<""<

cout<<"相乘后的结果为:

";

PrintList(L);

DestroyLink(L);

cout<<""<

Clear();

break;

case5:

if(La==NULL||Lb==NULL)

{

cout<<"多项式创建错误,请从头选择……"<

Clear();

break;

}

cout<<"一元多项式A为:

"<

PrintList(La);

cout<<""<

cout<<"一元多项式B为:

"<

PrintList(Lb);

cout<<""<

Clear();

break;

case6:

if(La&&Lb)

{

DestroyLink(La);

DestroyLink(Lb);

cout<<"多项式销毁成功!

"<

Clear();

}

else

{

cout<<"多项式不存在,请从头选择^^^"<

Clear();

}

break;

case7:

exit(0);//exit(0)强制终止程序,返回状态码0表示正常终止

default:

cout<<"输入错误,请从头选择操作……"<

Clear();

break;

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1