一元符号多项式的四则运算.doc
文本预览下载声明
C++开放项目实验报告
题目: 一元符号多项式四则运算
姓名:
指导老师:
学号:
班级:
内容总结
功能要求
用所学C++知识编程实现两个一元符号多项式的加法,减法和乘法运算。
算法概要设计
结点插入函数
void Insert (PNode *temp);
多项式的创建函数
void CreatPoly();
赋值运算符的重载
Polynomail operator = (const Polynomail p1);
一元符号多项式的加法
Polynomail operator + (const Polynomail p);
一元符号多项式的减法
Polynomail operator - (Polynomail p);
一元符号多项式的乘法
Polynomail operator * (const Polynomail p);
应用技巧
利用Insert()插入函数规范多项式的输入问题,进行同类项的合并和不同类项间的排序问题,使得到有序的链表,方便后续的运算
对赋值、加、减和乘运算符进行重载,赋予其新的意义,进行多项式间的四则运算。
发现函数间联系,可以减少代码的长度。巧妙利用Insert()函数和加运算符重载函数,方便乘法和减法等代码编写。
实验成果
输入要求
按提示一次输入多项式各项的系数和指数,建立多项式。如下所示:
系数,指数:1,2
系数,指数:3,4
系数,指数:0 4(以输入系数为零的项结束创建)
创建结果为:1x^2+3x^4
根据自己的需要选择输入功能序号进行运算,如选择数字2进行加法运算
输出样例
总体上各项是按照输入的方法进行输出,如果指数为零只输出系数,如 果系数为零,那么该项不输出,如果系数为负数,那么两项间“+”变“-”。 以上述输入为例创建的结果为:1x^2+3x^4。
如果另一个多项式为:-1-2x^6,
那么加法运算后的结果为:-1+1x^2+3x^4-2x^6
主要代码展示:
//**** c++开放实验项目****
//一元符号多项式的四则运算
#include iostream
using namespace std;
struct PNode{
PNode(double c=0,int e=-1){ coef=c; expn=e; next=NULL;}
double coef;
int expn;
PNode *next;
};
class Polynomial{
public:
Polynomial(){poly=new PNode;}
Polynomial(Polynomial p);
void Print();
~Polynomial();
void Insert (PNode *temp);
void CreatPoly();
Polynomial operator = (const Polynomial p);
Polynomial operator + (const Polynomial p);
Polynomial operator - (Polynomial p);
Polynomial operator * (const Polynomial p);
private:
PNode *poly;
};
//析构函数
Polynomial::~Polynomial(){
PNode *pt=poly-next;
while (pt){
poly-next=pt-next;
delete pt;
pt=poly-next;
}
delete poly;
poly=NULL;
}
//赋值运算符的重载
Polynomial Polynomial::operator = (const Polynomial p){
this-~Polynomial();
poly=new PNode;
PNode *pt=poly,*qt=p.poly-next;
while(qt){
PNode *s=new PNode(qt-coef,qt-expn);
pt-next=s;
pt=s;
qt=qt-
显示全部