一元符号多项式的四则运算讲解Word文档格式.docx
- 文档编号:18329688
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:12
- 大小:60.09KB
一元符号多项式的四则运算讲解Word文档格式.docx
《一元符号多项式的四则运算讲解Word文档格式.docx》由会员分享,可在线阅读,更多相关《一元符号多项式的四则运算讲解Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
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++这门课程的主要知识,提升了自我钻研能力,希望以后能够多参与一些这样的开发项目。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一元 符号 多项式 四则运算 讲解