一元多项式计算实验报告Word下载.docx

上传人:b****0 文档编号:13498649 上传时间:2022-10-11 格式:DOCX 页数:26 大小:157.62KB
下载 相关 举报
一元多项式计算实验报告Word下载.docx_第1页
第1页 / 共26页
一元多项式计算实验报告Word下载.docx_第2页
第2页 / 共26页
一元多项式计算实验报告Word下载.docx_第3页
第3页 / 共26页
一元多项式计算实验报告Word下载.docx_第4页
第4页 / 共26页
一元多项式计算实验报告Word下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

一元多项式计算实验报告Word下载.docx

《一元多项式计算实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《一元多项式计算实验报告Word下载.docx(26页珍藏版)》请在冰豆网上搜索。

一元多项式计算实验报告Word下载.docx

Node(floatc,inte,Node*next);

~Node(){};

floatcoef;

//系数

intexp;

//指数

Node*Next;

//指向下一项的指针

friendclassPolynominal;

};

节点类,储存一元多项式每一项的信息。

该内含有两个构造函数,一个析构函数及存储系数、指数和Next指针等成员变量。

与Polynominal是友元关系,允许Polynominal的访问。

具体成员函数如下:

1)

Node:

:

Node(){}

默认构造函数。

2)

Node(floatc,inte,Node*next){

coef=c;

exp=e;

Next=next;

}

重载的自定义构造函数,用于给成员变量coef、exp和Next存入数据,Next指向传参来的next指针指向的地址,用于构造链表。

2.

classPolynominal{

Polynominal();

Polynominal(Polynominal&

a);

//拷贝构造函数

voidGetMSG(CStringTempPloy);

//获取由对话框输入的字符串并处理

CStringOutput_Node();

//输出最后结果

voidPolyAdd(Polynominal&

a,Polynominal&

b);

//加法

voidPolySubtract(Polynominal&

//减法

voidPolyMultiply(Polynominal&

//乘法

voidPolySort();

//排序函数,用于乘法之后的按指数排序

voidOutFile();

//文本输出函数

voidOutFile(Polynominal&

b,stringch);

//重载文本输出函数

voidOpposeCoef(Polynominal&

a,Node*temp);

//系数取反,用于减法运算

NodetheList;

//头节点

ofstreamFOut;

//输出流

此类用于构造一元多项式。

包括加、减、乘各各功能函数,还有两个帮助运算的辅助函数,以及界面输入输出和文本输出函数。

成员变量有头节点和输出流。

Polynominal:

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->

}

拷贝构造函数,用于计算时对象间的赋值,防止误改数据。

3)

voidPolynominal:

GetMSG(CStringTempPoly){

TempPoly.Remove(_T('

^'

));

Node*TempNode=&

inti=0;

for(i;

i<

TempPoly.GetLength();

){

CStringtemp1;

CStringtemp2;

intj=1;

if(TempPoly.GetAt(i)==_T('

-'

)){

temp1=temp1+TempPoly.GetAt(i);

i++;

}

if(TempPoly.GetAt(i)==_T('

+'

x'

)){

temp1=temp1+_T('

1'

);

while(j==1){

if(TempPoly.GetAt(i)!

=_T('

temp1=temp1+TempPoly.GetAt(i);

i++;

}

elsej=0;

i++;

if(i<

(TempPoly.GetLength()-1)&

&

TempPoly.GetAt(i)==_T('

temp2=temp2+TempPoly.GetAt(i);

if(i==(TempPoly.GetLength()-1)&

))

temp2=temp2+_T('

else{

if(i==TempPoly.GetLength()&

TempPoly.GetAt(i-1)==_T('

temp2=temp2+_T('

else{

while(i<

TempPoly.GetLength()&

TempPoly.GetAt(i)!

)&

temp2=temp2+TempPoly.GetAt(i);

i++;

}

TempNode->

Next=newNode(_ttof(temp1),_ttoi(temp2),NULL);

//链表构建

TempNode=TempNode->

此函数用于把从对话框获取的字符串进行处理,截取出多项式各项系数和指数,并转换为float型和int型,构造一元多项式链表。

4)

CStringPolynominal:

Output_Node(){

intfirst=0;

CStringtemp;

CStringtemp_coef;

CStringtemp_exp;

Node*TempNode=theList.Next;

for(;

TempNode!

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("

break;

default:

coef==1)//其余指数输出“X^”形式

)+temp_exp;

elsetemp=temp+temp_coef+_T("

x^"

break;

first=1;

returntemp;

输出函数,将计算所得结果输出到对话框。

5)

PolyAdd(Polynominal&

b){

Node*p,*q,*temp;

temp=&

p=a.theList.Next;

q=b.theList.Next;

while(p!

=NULL&

q!

=NULL){

if((p->

exp)>

(q->

exp)){

temp->

Next=newNode(p->

coef,p->

temp=temp->

p=p->

elseif((p->

exp)==(q->

coef+q->

q=q->

exp)<

Next=newNode(q->

coef,q->

if(q!

while(q!

if(p!

while(p!

加法函数,实现多项式的相加。

在其中需要判断各项指数的关系,已实现按指数大小关系构建链表。

6)

OpposeCoef(Polynominal&

a,Node*temp){

temp=a.theList.Next;

while(temp!

temp->

coef=-(temp->

在执行减法操作时,用此函数将被减多项式各位系数取反,之后可直接调用加法函数进行运算;

7)

PolySubtract(Polynominal&

b)

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

当前位置:首页 > 医药卫生 > 基础医学

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

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