一元符号多项式的四则运算讲解Word文档格式.docx

上传人:b****3 文档编号:18329688 上传时间:2022-12-15 格式:DOCX 页数:12 大小:60.09KB
下载 相关 举报
一元符号多项式的四则运算讲解Word文档格式.docx_第1页
第1页 / 共12页
一元符号多项式的四则运算讲解Word文档格式.docx_第2页
第2页 / 共12页
一元符号多项式的四则运算讲解Word文档格式.docx_第3页
第3页 / 共12页
一元符号多项式的四则运算讲解Word文档格式.docx_第4页
第4页 / 共12页
一元符号多项式的四则运算讲解Word文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

一元符号多项式的四则运算讲解Word文档格式.docx

《一元符号多项式的四则运算讲解Word文档格式.docx》由会员分享,可在线阅读,更多相关《一元符号多项式的四则运算讲解Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

一元符号多项式的四则运算讲解Word文档格式.docx

1利用Insert()插入函数规范多项式的输入问题,进行同类项的合并和不同类项间的排序问题,使得到有序的链表,方便后续的运算

2对赋值、加、减和乘运算符进行重载,赋予其新的意义,进行多项式间的四则运算。

3发现函数间联系,可以减少代码的长度。

巧妙利用Insert()函数和加运算符重载函数,方便乘法和减法等代码编写。

二、实验成果

1.输入要求

按提示一次输入多项式各项的系数和指数,建立多项式。

如下所示:

系数,指数:

1,2

3,4

04(以输入系数为零的项结束创建)

创建结果为:

1x^2+3x^4

根据自己的需要选择输入功能序号进行运算,如选择数字2进行加法运算

2.输出样例

总体上各项是按照输入的方法进行输出,如果指数为零只输出系数,如果系数为零,那么该项不输出,如果系数为负数,那么两项间“+”变“-”。

以上述输入为例创建的结果为:

1x^2+3x^4。

如果另一个多项式为:

-1-2x^6,

那么加法运算后的结果为:

-1+1x^2+3x^4-2x^6

3.主要代码展示:

//****c++开放实验项目****

//一元符号多项式的四则运算

#include<

iostream>

usingnamespacestd;

structPNode{

PNode(doublec=0,inte=-1){coef=c;

expn=e;

next=NULL;

}

doublecoef;

intexpn;

PNode*next;

};

classPolynomial{

public:

Polynomial(){poly=newPNode;

}

Polynomial(Polynomial&

voidPrint();

~Polynomial();

voidInsert(PNode*temp);

voidCreatPoly();

Polynomial&

operator=(constPolynomial&

operator+(constPolynomial&

operator-(Polynomial&

operator*(constPolynomial&

private:

PNode*poly;

//析构函数

Polynomial:

:

~Polynomial(){

PNode*pt=poly->

next;

while(pt){

poly->

next=pt->

deletept;

pt=poly->

}

deletepoly;

poly=NULL;

//赋值运算符的重载

Polynomial&

Polynomial:

operator=(constPolynomial&

p){

this->

~Polynomial();

poly=newPNode;

PNode*pt=poly,*qt=p.poly->

while(qt){

PNode*s=newPNode(qt->

coef,qt->

expn);

pt->

next=s;

pt=s;

qt=qt->

}

return*this;

//复制构造函数

Polynomial(Polynomial&

p){

*this=p;

//遍历

voidPolynomial:

Print(){

if(poly->

next==NULL){

cout<

<

"

empty!

\n"

;

return;

if(pt){

if(pt->

expn==0){

cout<

pt->

coef;

}

else{

coef<

x^"

expn;

pt=pt->

while(pt){

if(pt->

0){

cout<

}

else{

+"

cout<

endl;

//结点插入函数

Insert(PNode*temp){

next=temp;

PNode*pt=poly;

PNode*qt=pt->

while(qt&

&

qt->

expn<

temp->

expn){

pt=qt;

qt=pt->

if(qt==NULL||qt->

expn>

temp->

next=qt;

else{

qt->

coef+=temp->

if(qt->

coef==0){

pt->

next=qt->

deleteqt;

}

//多项式的构建函数

CreatPoly(){

doublec;

inte;

系数,指数:

cin>

>

c>

e;

while(c){

PNode*p=newPNode(c,e);

Insert(p);

cin>

//多项式的加法

operator+(constPolynomial&

q){

Polynomial*PC=newPolynomial;

PNode*ta=poly->

next,*tb=q.poly->

next,*tc=PC->

poly;

while(ta&

tb){

inta=ta->

intb=tb->

intt=a>

b?

1:

(b>

a?

-1:

0);

switch(t){

case-1:

{

PNode*s=newPNode(ta->

coef,ta->

tc->

tc=s;

ta=ta->

break;

case0:

doublesum=ta->

coef+tb->

if(sum==0){

ta=ta->

tb=tb->

}

else{

PNode*s=newPNode(sum,ta->

tb=tb->

case1:

PNode*s=newPNode(tb->

coef,tb->

tc->

tc=tc->

}//switch

}//while

while(ta){

PNode*s=newPNode(ta->

tc->

tc=s;

ta=ta->

while(tb){

PNode*s=newPNode(tb->

tb=tb->

return*PC;

//多项式的减法

operator-(Polynomial&

//复制取反相加

PolynomialP(p),*PC=newPolynomial;

PNode*pt=P.poly->

while(pt){

coef=-pt->

*PC=*this+P;

//多项式的乘法

next,*qt;

for(;

pt;

pt=pt->

next){

for(qt=p.poly->

qt;

qt=qt->

PNode*s=newPNode(pt->

coef*qt->

coef,pt->

expn+qt->

PC->

Insert(s);

//主函数

intmain(){

PolynomialPA,PB,PC;

intindex;

//------一元符号多项式的表示及运算------//"

本函数的功能列表:

1.多项式的加法:

2.多项式的减法:

3.多项式的乘法:

4.选择重建多项式:

5.结束运算\n"

依次输入PA各项系数和指数(以输入系数0项结束),建立多项

式:

PA.CreatPoly();

PA.Print();

依次输入PB各项系数和指数(以输入系数0项结束),建立多项

PB.CreatPoly();

PB.Print();

\n请输入功能序号进行多项式的运算:

index;

while(index){

switch(index){

{

PC=PA+PB;

PC=PA+PB:

PC.Print();

case2:

PC=PA-PB;

PC=PA-PB:

case3:

PC=PA*PB;

PC=PA*PB:

case4:

intflag;

输入0修改多项式PA,其他数字保留多项式PA:

cin>

flag;

if(!

flag){

PA.CreatPoly();

PA.Print();

}

输入0修改多项式PB,其他数字保留多项式PB:

PB.CreatPoly();

PB.Print();

case5:

运算结束"

return0;

}//switch

\n是否需要继续,请再次输入选择:

}//while

return0;

4.项目结果展示

三、实践体会

在此次的C++开放项目试验中,我承担了用C++实现一元符号多项式的四则运算,将所学C++知识运用实战编程中去,并及时进行知识的查缺补漏,帮助我更好的掌握了C++这门语言。

通过整个编程调试过程,我认识到完成一个程序的设计,必须一步一步的进行,修改程序中的Bug,以防影响后续程序的进行。

不能一股脑的将程序全部写出,这样就会使得程序的调试的难度大大增加。

要能够去考虑程序的每一步实现的可能性问题。

如在这次试验中,关于赋值运算符的问题,普通的赋值运算符无法实现我自定义的多项式的整体复制,必须进行运算符的重载,赋予其新的意义。

类似的还有加号、减号和乘号。

考虑程序设计中的特殊部分的运算,像是此次项目中的头结点和尾结点等,防止程序的特殊化。

要考虑程序的实用性,结合要求来对程序进行调整,返回引用值减少空间的使用,保护多项式的封装性,使得程序运行通畅和方便。

在程序的基本编写结束时。

还要对程序进行优化,使得程序能够尽可能的精炼,增加程序的可读性和含金量等。

总之一段好的代码一定是经过精心设计,千锤百炼,然后才能经久不衰。

在此次实验项目中,我学会了一些编程的技巧,掌握了C++这门课程的主要知识,提升了自我钻研能力,希望以后能够多参与一些这样的开发项目。

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

当前位置:首页 > 解决方案 > 解决方案

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

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