C++多项式课程设计多项式的运算.doc

上传人:laozhun 文档编号:2384407 上传时间:2023-02-17 格式:DOC 页数:17 大小:72KB
返回 下载 相关 举报
C++多项式课程设计多项式的运算.doc_第1页
第1页 / 共17页
C++多项式课程设计多项式的运算.doc_第2页
第2页 / 共17页
C++多项式课程设计多项式的运算.doc_第3页
第3页 / 共17页
C++多项式课程设计多项式的运算.doc_第4页
第4页 / 共17页
C++多项式课程设计多项式的运算.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《C++多项式课程设计多项式的运算.doc》由会员分享,可在线阅读,更多相关《C++多项式课程设计多项式的运算.doc(17页珍藏版)》请在三一办公上搜索。

1、计算机科学与应用系程序类课程设计设计报告书题 目: 多项式的运算 指导教师: 宋涛 姓 名: 潘彬彬 学 号: 111006420 日 期: 2012/5/16 计算机科学与应用系 2011-2012学年第二学期一、 需求分析输入部分,要求用户能从屏幕上输入两个一元多项式。如多项式A为:x3+2x2+4;多项式B为:-x3+4x2+2。程序通过语句得到这两个字符串,进行解析,分解出系数和指数,存储在不同的线性表LA,LB中。然后,程序基于线性表LA、LB来实现多项式的加、减、乘、运算。最终,输出部分将得到的运算结果输出,如上述多项式A和B的和为:6x2+6。二、 系统主要功能用于一元多项式的加

2、减乘运算。三、 流程图从屏幕输入多项式A和B分析A、B,并将指数、系数对存储到线性表LA、LB中多项式加法多项式减法多项式乘法将结果显示出来图1.多项式运算的流程图四、 数据结构设计1. 定义多项式类class Polynomial;2. 把多项式的指数和系数结合定义为一个类class PolyNode;3. 用链表保存多项式list L;五、 类设计1.多项式的项类指数、系数可以描述多项式的一项,作为一个整体来存储;class PolyNodepublic:double xishu;/系数int zhishu;/指数public:PolyNode(void);PolyNode(void);P

3、olyNode(double xishu, int zhishu)/构造函数,为xishu、zhishu赋值bool operator (PolyNode b)const /判断两项是否满足大的关系,指数大者大bool operator= (PolyNode b)const/判断两项是否满足等的关系;2.多项式类在多项式类中,必须有存储多项式各项的线性表,还必须有实现多项式运算的成员函数。类的定义如下:class Polynomial/多项式类,其中实现了多项式的加减乘除。private:list L;/用于存放多项式的链表public:Polynomial()/构造函数;Polynomial

4、()/析构函数L.clear();/清空链表;void print()/输出多项式void Insert(PolyNode e) /插入一个结点,使得插入后表中结点仍然按指数有序还要有合并同类项的功能 void Insert(double xishu,int zhishu) Polynomial operator+(Polynomial b) /重载多项式的加法运算符 Polynomial operator-(Polynomial b) /重载多项式的减法运算符Polynomial operator*(Polynomial b) /重载多项式的乘法运算符void Input(Polynomia

5、l &p) /输入多项式;六、 主要算法设计1.用链表保存两个多项式(list L;);2.将多项式的项封装为一个类(class PolyNode);3.用运算符重载的方式实现多项式的加减乘运算,创建一个用于遍历的指针对链表进行遍历(list:iterator i;),先将指数相同的项的系数相加 if(i-zhishu =e.zhishu )/合并同类项i-xishu+=e.xishu;if(i-xishu=0)L.erase(i);(即运算之前合并同类项),指数不同按大小顺序插入; else if(i-zhishu e.zhishu )L.insert(i,e);4.减法时将另一个多项式每一

6、项系数乘个-1再相加; PolyNode temp=*i;temp.xishu*=-1;t.Insert(temp);5.乘法用第一个多项式的每一项与第二个多项式的每一项相乘即系数相乘、指数相加。 for(i=b.L.begin();i!=b.L.end();i+)for(j=L.begin();j!=L.end();j+) PolyNode temp;temp.xishu=i-xishu*j-xishu;temp.zhishu=i-zhishu+j-zhishu;if(temp.xishu)t.Insert(temp);七、 主要代码1.多项式的输出 void print()list:ite

7、rator i;if(L.size()=0)cout0endl;return;i=L.begin();coutxishuXzhishu;/打印多项式的第一项i+;for(;i!=L.end();i+)/打印多项式的其他项if(i-xishu0)cout+xishuXzhishu;elsecoutxishuXzhishu;coutendl;2.插入与合并 void Insert(PolyNode e)/插入一个结点,使得插入后表中结点仍然按指数有序/还要有合并同类项的功能list:iterator i;for(i=L.begin();i!=L.end();i+)if(i-zhishu =e.zh

8、ishu )/合并同类项i-xishu+=e.xishu;if(i-xishu=0)L.erase(i);break;else if(i-zhishu e.zhishu )/找到插入位置,插入L.insert(i,e);break;if(i=L.end()L.push_back(e);/print();void Insert(double xishu,int zhishu)PolyNode e(xishu,zhishu);Insert(e);3.加法 Polynomial operator+(Polynomial b)Polynomial t;t.L=L;list:iterator i;for

9、(i=b.L.begin();i!=b.L.end();i+)t.Insert(*i);return t;4.减法 Polynomial operator-(Polynomial b)Polynomial t;t.L=L;list:iterator i;for(i=b.L.begin();i!=b.L.end();i+)PolyNode temp=*i;temp.xishu*=-1;t.Insert(temp);return t;5.乘法Polynomial operator*(Polynomial b)Polynomial t;list:iterator i,j;for(i=b.L.begi

10、n();i!=b.L.end();i+)for(j=L.begin();j!=L.end();j+) PolyNode temp;temp.xishu=i-xishu*j-xishu;temp.zhishu=i-zhishu+j-zhishu;if(temp.xishu)t.Insert(temp);return t;6.多项式的输入void Input(Polynomial &p)cout请输入多项式的系数和指数,以空格隔开,0 0表示结束:xishuzhishu;if(xishu=0 & zhishu=0)break;p.Insert(xishu,zhishu);7.主函数int main

11、()Polynomial p,q,r;while(1)cout1:输入多项式endl;cout2:加法endl;cout3:减法endl;cout4:乘法endl;cout5:退出endl;coutt;if(t=1)cout请输入第一个多项式的信息endl;Input(p);cout请输入第二个多项式的信息endl;Input(q);else if(t=2)r=p+q;coutp=;p.print();coutq=;q.print();coutp+q=;r.print();else if(t=3)coutp=;p.print();coutq=;q.print();coutp-q=;r=p-q;

12、r.print();else if(t=4)r=p*q;coutp=;p.print();coutq=;q.print();coutp*q=;r.print();else if(t=5)break;return 0;八、 系统运行结果样例九、 结束语 通过这次课程设计,我感觉到要真正做出一个程序并不很容易,但只要用心去做,总会有收获,特别是当我遇到问题,问老师,问同学,想尽办法去解决,最后终于找到方法时,心里的那份喜悦之情真是难以形容.编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查.直到最终搞清为止。无论如何,能比较圆满的完成这个课程设计对我来说是个极大的鼓舞,成为我漫漫编程路上的一个里程碑。指导教师评语:成绩: 签名:

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号