一元多项式的计算实验报告.docx
- 文档编号:1298361
- 上传时间:2022-10-20
- 格式:DOCX
- 页数:26
- 大小:158.09KB
一元多项式的计算实验报告.docx
《一元多项式的计算实验报告.docx》由会员分享,可在线阅读,更多相关《一元多项式的计算实验报告.docx(26页珍藏版)》请在冰豆网上搜索。
一元多项式的计算实验报告
计算机学院
工程实践
一元多项式的计算
总报告
小组序号:
编撰人:
年级班级:
指导教师:
提交日期:
1.项目组成员分工
表1项目组成员分工
2.程序功能
(程序实现的功能,功能结构图)
实现功能:
一元多项式的加、减、乘运算
功能结构图:
3.程序设计简介
(包括:
类及其属性和方法、类之间关系、关键代码等的说明)
1.
classNode
{
public:
Node();
Node(floatc,inte,Node*next);
~Node(){};
floatcoef;//系数
intexp;//指数
Node*Next;//指向下一项的指针
friendclassPolynominal;
};
节点类,储存一元多项式每一项的信息。
该内含有两个构造函数,一个析构函数及存储系数、指数和Next指针等成员变量。
与Polynominal是友元关系,允许Polynominal的访问。
具体成员函数如下:
1)
Node:
:
Node(){}
默认构造函数。
2)
Node:
:
Node(floatc,inte,Node*next){
coef=c;
exp=e;
Next=next;
}
重载的自定义构造函数,用于给成员变量coef、exp和Next存入数据,Next指向传参来的next指针指向的地址,用于构造链表。
2.
classPolynominal{
public:
Polynominal();
Polynominal(Polynominal&a);//拷贝构造函数
voidGetMSG(CStringTempPloy);//获取由对话框输入的字符串并处理
CStringOutput_Node();//输出最后结果
voidPolyAdd(Polynominal&a,Polynominal&b);//加法
voidPolySubtract(Polynominal&a,Polynominal&b);//减法
voidPolyMultiply(Polynominal&a,Polynominal&b);//乘法
voidPolySort();//排序函数,用于乘法之后的按指数排序
voidOutFile();//文本输出函数
voidOutFile(Polynominal&a,Polynominal&b,stringch);//重载文本输出函数
voidOpposeCoef(Polynominal&a,Node*temp);//系数取反,用于减法运算
NodetheList;//头节点
ofstreamFOut;//输出流
};
此类用于构造一元多项式。
包括加、减、乘各各功能函数,还有两个帮助运算的辅助函数,以及界面输入输出和文本输出函数。
成员变量有头节点和输出流。
具体成员函数如下:
1)
Polynominal:
:
Polynominal(){}
默认构造函数
2)
Polynominal:
:
Polynominal(Polynominal&a){
Node*temp=a.theList.Next;
Node*tempNode=&theList;
for(;temp!
=NULL;){
tempNode->Next=newNode(temp->coef,temp->exp,NULL);
temp=temp->Next;
tempNode=tempNode->Next;
}
}
拷贝构造函数,用于计算时对象间的赋值,防止误改数据。
3)
voidPolynominal:
:
GetMSG(CStringTempPoly){
TempPoly.Remove(_T('^'));
Node*TempNode=&theList;
inti=0;
for(i;i CStringtemp1; CStringtemp2; intj=1; if(TempPoly.GetAt(i)==_T('-')){ temp1=temp1+TempPoly.GetAt(i); i++; } if(TempPoly.GetAt(i)==_T('+')){ i++; } if(TempPoly.GetAt(i)==_T('x')){ temp1=temp1+_T('1'); } while(j==1){ if(TempPoly.GetAt(i)! =_T('x')){ temp1=temp1+TempPoly.GetAt(i); i++; } elsej=0; } i++; if(i<(TempPoly.GetLength()-1)&&TempPoly.GetAt(i)==_T('-')){ temp2=temp2+TempPoly.GetAt(i); i++; } if(i==(TempPoly.GetLength()-1)&&TempPoly.GetAt(i)==_T('x')) temp2=temp2+_T('1'); else{ if(i==TempPoly.GetLength()&&TempPoly.GetAt(i-1)==_T('x')) temp2=temp2+_T('1'); else{ while(i =_T('+')&&TempPoly.GetAt(i)! =_T('-')){ temp2=temp2+TempPoly.GetAt(i); i++; } } } TempNode->Next=newNode(_ttof(temp1),_ttoi(temp2),NULL);//链表构建 TempNode=TempNode->Next; } } 此函数用于把从对话框获取的字符串进行处理,截取出多项式各项系数和指数,并转换为float型和int型,构造一元多项式链表。 4) CStringPolynominal: : Output_Node(){ intfirst=0; CStringtemp; CStringtemp_coef; CStringtemp_exp; Node*TempNode=theList.Next; for(;TempNode! =NULL;TempNode=TempNode->Next){ if(first==1&&TempNode->coef>0)temp=temp+_T("+"); temp_coef.Format(_T("%g"),TempNode->coef); temp_exp.Format(_T("%d"),TempNode->exp); switch(TempNode->exp){ case0: temp=temp+temp_coef;break;//指数为0则推出 case1: if(TempNode->coef==1)//指数为1则直接输出X temp=temp+_T("x"); elsetemp=temp+temp_coef+_T("x"); break; default: if(TempNode->coef==1)//其余指数输出“X^”形式 temp=temp+_T("x")+temp_exp; elsetemp=temp+temp_coef+_T("x^")+temp_exp; break; } first=1; } returntemp; } 输出函数,将计算所得结果输出到对话框。 5) voidPolynominal: : PolyAdd(Polynominal&a,Polynominal&b){ Node*p,*q,*temp; temp=&theList; p=a.theList.Next; q=b.theList.Next; while(p! =NULL&&q! =NULL){ if((p->exp)>(q->exp)){ temp->Next=newNode(p->coef,p->exp,NULL); temp=temp->Next; p=p->Next; } elseif((p->exp)==(q->exp)){ temp->Next=newNode(p->coef+q->coef,p->exp,NULL); temp=temp->Next; p=p->Next; q=q->Next; } elseif((p->exp)<(q->exp)){ temp->Next=newNode(q->coef,q->exp,NULL); temp=temp->Next; q=q->Next; } } if(q! =NULL){ while(q! =NULL){ temp->Next=newNode(q->coef,q->exp,NULL); temp=temp->Next; q=q->Next; } } if(p! =NULL){ while(p! =NULL){ temp->Next=newNode(p->coef,p->exp,NULL); temp=temp->Next; p=p->Next; } } } 加法函数,实现多项式的相加。 在其中需要判断各项指数的关系,已实现按指数大小关系构建链表。 6) voidPolynominal: : OpposeCoef(Polynominal&a,Node*temp){ temp=a.theList.Next; while(temp! =NULL){ temp->coef=-(temp->coef); temp=temp->Next; } } 在执行减法操作时,用此函数将被减多项式各位系数取反,之后可直接调用加法函数进行运算; 7) voidPolynominal: : PolySubtract(Polynominal&a,Polynominal&b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一元 多项式 计算 实验 报告