版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、山东大学14级计算机科学与技术学院,王士彬#include#include#include #includeusing namespace std;class termpublic:term(int c=0,int e=0):coef(c),exp(e)int coef;/系数 int exp;/指数 ;class Polynomialprivate:int degree;/阶数 list termList;/存储多项式 public:Polynomial()degree=0;/-构造函数,创造一个0阶多项式 int Degree();/-求多项式的阶数 double Value(double
2、 x);/-返回多项式在x下的值 void Clear();/-清空多项式 Polynomial shunxu();/-指数递增变递减,递减变递增 Polynomial paixu();/-用来对计算后结果的排序处理 (主要去掉系数为0的项)/*函数方法 */ void Input();/-多项式输入 void OutPut();/-多项式输出 Polynomial Add(Polynomial &b);/-多项式相加 Polynomial Subtract(Polynomial &b);/-多项式相减 Polynomial Multiply(Polynomial &b);/-多项式相乘 Po
3、lynomial Divide(Polynomial &b); /-多项式相除 /* 操作符重载 */ friend istream& operator(istream &is,Polynomial &obj);/-输入符号重载 friend ostream& operator(ostream &os,Polynomial &obj);/-输出符号重载 Polynomial operator+(Polynomial &b);/-加号重载 Polynomial operator-(Polynomial &b);/-减号重载 Polynomial operator*(Polynomial &b);
4、/-乘号重载 Polynomial operator/(Polynomial &b);/-除号重载 ; int Polynomial:Degree()list:iterator iter=termList.begin();term temp=(term)*iter; int degree=temp.exp; return degree;double Polynomial:Value(double x)double sum=0;int i;list:iterator iter=termList.begin();for(;iter!=termList.end();iter+)term temp=(
5、term)*iter;int t=1;for(i=temp.exp;i!=0;i-)t=t*x; sum+=temp.coef*t;return sum;void Polynomial:Clear()termList.clear();Polynomial Polynomial:shunxu()Polynomial p1;list:iterator iter=termList.begin();for(;iter!=termList.end();iter+)term temp;term t_a=(term)*iter;temp.coef=t_a.coef;temp.exp=t_a.exp;p1.t
6、ermList.push_front(temp);return p1;/用来对计算后结果的排序处理 (在输入时已经对系数为0的情况处理过了,但得出的结果系数可能有等于0的,此方法就是对系数为0的情况处理) Polynomial Polynomial:paixu()Polynomial aaa;list:iterator it =termList.begin();for(;it!=termList.end();)term t11=*it;if(t11.coef=0)it+;elseaaa.termList.push_back(t11);it+;return aaa;void Polynomial
7、:Input()int n;coutn;cout按升幂输入多项式的系数和指数endl;for(int i=1;i=n;i+)term t_temp;cout请输入第it_temp.coef;cint_temp.exp;if(t_temp.coef!=0)termList.push_back(t_temp); void Polynomial:OutPut()if(termList.empty()cout0;elselist:iterator it = termList.begin();for(;it!=termList.end();)term t11=*it;if(t11.exp!=0)if(t
8、11.coef=1)if(t11.exp=1)cout0)cout+;else cout;else coutx0)cout+;else cout;else if(t11.coef=(-1)if(t11.exp=1) cout0)cout+;else cout; else cout-x0)cout+;else cout; elseif(t11.exp=1)coutt11.coef0)cout+;else cout;elsecoutt11.coefx0)cout+;else cout;elsecout0)cout+;else cout; Polynomial Polynomial:Add(Poly
9、nomial &b)Polynomial c;list:iterator iter_a=termList.begin();list:iterator iter_b=b.termList.begin();while(iter_a!=termList.end()&iter_b!=b.termList.end()term t_temp;term t_a=(term)*iter_a;term t_b=(term)*iter_b;if(t_a.expt_b.exp)c.termList.push_back(t_a);iter_a+;elset_temp.coef=t_a.coef+t_b.coef;t_
10、temp.exp=t_a.exp;c.termList.push_back(t_temp);iter_a+;iter_b+;for(;iter_a!=termList.end();iter_a+)c.termList.push_back(*iter_a);for(;iter_b!=b.termList.end();iter_b+)c.termList.push_back(*iter_b);Polynomial c1=c.paixu();return c1;Polynomial Polynomial:Subtract(Polynomial &b)Polynomial c;list:iterato
11、r iter_a=termList.begin();list:iterator iter_b=b.termList.begin();while(iter_a!=termList.end()&iter_b!=b.termList.end()term temp;term t_a=(term)*iter_a;term t_b=(term)*iter_b;if(t_a.expt_b.exp)c.termList.push_back(t_a);iter_a+;else if(t_a.expt_b.exp)temp.coef=-t_b.coef;temp.exp=t_b.exp;c.termList.pu
12、sh_back(temp);iter_b+;elsetemp.coef=t_a.coef-t_b.coef;temp.exp=t_a.exp;c.termList.push_back(temp);iter_a+;iter_b+;for(;iter_a!=termList.end();iter_a+)c.termList.push_back(*iter_a);for(;iter_b!=b.termList.end();iter_b+)term temp2;term t_b=(term)*iter_b;temp2.coef=-t_b.coef;temp2.exp=t_b.exp;c.termLis
13、t.push_back(temp2);Polynomial c1=c.paixu();return c1;Polynomial Polynomial:Multiply(Polynomial &b)Polynomial c;list:iterator iter_a=termList.begin();for(;iter_a!=termList.end();iter_a+)Polynomial c1;/这个 c1的位置只能放在这里,局部变量 list:iterator iter_b=b.termList.begin();for(;iter_b!=b.termList.end();iter_b+)te
14、rm temp;term t_a=(term)*iter_a;term t_b=(term)*iter_b;temp.coef=t_a.coef*t_b.coef;temp.exp=t_a.exp+t_b.exp;c1.termList.push_back(temp);c=c.Add(c1);c1.Clear();return c; Polynomial Polynomial:Divide(Polynomial &b)Polynomial a;/被除数 list:iterator iter_a=termList.begin();for(;iter_a!=termList.end();iter_
15、a+)term temp;term t_a=(term)*iter_a;temp.coef=t_a.coef;temp.exp=t_a.exp; a.termList.push_back(temp); /-Polynomial quotient,remainder,temp1,temp2;list:iterator qa_a=a.termList.begin();list:iterator qb_b=b.termList.begin(); term qa=(term)*qa_a;term qb=(term)*qb_b;temp1=a;/cout要到达while循环了=qb.exp)term t
16、emp2_term;temp2_term.coef=qa.coef/qb.coef;temp2_term.exp=qa.exp-qb.exp;quotient.termList.push_back(temp2_term);Polynomial center_quotient;center_quotient.termList.push_back(temp2_term);Polynomial tt=b*center_quotient;a=a-tt;a=a.paixu();list:iterator qa_1=a.termList.begin(); qa=(term)*qa_1; Polynomia
17、l ji=quotient*b; / Polynomial remainder =temp1-ji; return remainder; istream &operator(istream &is,Polynomial &obj)int n;coutn;cout按升幂输入多项式的系数和指数endl;for(int i=1;i=n;i+)term t_temp;cout请输入第it_temp.coef;cint_temp.exp;if(t_temp.coef!=0)obj.termList.push_back(t_temp); return is;ostream& operator(ostrea
18、m &os,Polynomial &obj)if(obj.termList.empty()cout0;elselist:iterator it = obj.termList.begin();for(;it!=obj.termList.end();)term t11=*it;if(t11.exp!=0)if(t11.coef=1)if(t11.exp=1)cout0)cout+;else cout;else coutx0)cout+;else cout;else if(t11.coef=(-1)if(t11.exp=1) cout0)cout+;else cout; else cout-x0)c
19、out+;else cout; elseif(t11.exp=1)coutt11.coef0)cout+;else cout;elsecoutt11.coefx0)cout+;else cout;elsecout0)cout+;else cout; return os;Polynomial Polynomial:operator+(Polynomial &b)Polynomial c;list:iterator iter_a=termList.begin();list:iterator iter_b=b.termList.begin();while(iter_a!=termList.end()
20、&iter_b!=b.termList.end()term t_temp;term t_a=(term)*iter_a;term t_b=(term)*iter_b;if(t_a.expt_b.exp)c.termList.push_back(t_a);iter_a+;elset_temp.coef=t_a.coef+t_b.coef;t_temp.exp=t_a.exp;c.termList.push_back(t_temp);iter_a+;iter_b+;for(;iter_a!=termList.end();iter_a+)c.termList.push_back(*iter_a);f
21、or(;iter_b!=b.termList.end();iter_b+)c.termList.push_back(*iter_b);Polynomial c1=c.paixu();return c1;Polynomial Polynomial:operator-(Polynomial &b)Polynomial c;list:iterator iter_a=termList.begin();list:iterator iter_b=b.termList.begin();while(iter_a!=termList.end()&iter_b!=b.termList.end()term temp
22、;term t_a=(term)*iter_a;term t_b=(term)*iter_b;if(t_a.expt_b.exp)c.termList.push_back(t_a);iter_a+;else if(t_a.expt_b.exp)temp.coef=-t_b.coef;temp.exp=t_b.exp;c.termList.push_back(temp);iter_b+;elsetemp.coef=t_a.coef-t_b.coef;temp.exp=t_a.exp;c.termList.push_back(temp);iter_a+;iter_b+;for(;iter_a!=t
23、ermList.end();iter_a+)c.termList.push_back(*iter_a);for(;iter_b!=b.termList.end();iter_b+)term temp2;term t_b=(term)*iter_b;temp2.coef=-t_b.coef;temp2.exp=t_b.exp;c.termList.push_back(temp2);Polynomial c1=c.paixu();return c1;Polynomial Polynomial:operator*(Polynomial &b)Polynomial c;list:iterator it
24、er_a=termList.begin();for(;iter_a!=termList.end();iter_a+)Polynomial c1;/这个 c1的位置只能放在这里,局部变量 list:iterator iter_b=b.termList.begin();for(;iter_b!=b.termList.end();iter_b+)term temp;term t_a=(term)*iter_a;term t_b=(term)*iter_b;temp.coef=t_a.coef*t_b.coef;temp.exp=t_a.exp+t_b.exp;c1.termList.push_bac
25、k(temp);c=c+c1;return c;Polynomial Polynomial:operator/(Polynomial &b)Polynomial a;/被除数 list:iterator iter_a=termList.begin();for(;iter_a!=termList.end();iter_a+)term temp;term t_a=(term)*iter_a;temp.coef=t_a.coef;temp.exp=t_a.exp; a.termList.push_back(temp); /-Polynomial quotient,remainder,temp1,te
26、mp2;list:iterator qa_a=a.termList.begin();list:iterator qb_b=b.termList.begin(); term qa=(term)*qa_a;term qb=(term)*qb_b;temp1=a;/cout要到达while循环了=qb.exp)term temp2_term;temp2_term.coef=qa.coef/qb.coef;temp2_term.exp=qa.exp-qb.exp;quotient.termList.push_back(temp2_term);Polynomial center_quotient;cen
27、ter_quotient.termList.push_back(temp2_term);Polynomial tt=b*center_quotient;a=a-tt;a=a.paixu();list:iterator qa_1=a.termList.begin(); qa=(term)*qa_1; /cout一直在while循环里endl; / cout出while循环了endl; Polynomial ji=quotient*b; remainder =temp1-ji; return quotient;int main() time_t t; time(&t); coutendl; cou
28、t 欢迎使用一元稀疏多项式计算器 endl;/ cout 功能:多项式的加,减,乘,除及按x求值 王 士 彬 endl; cout 输入:多项式的项数,系数,指数 2014级计算机学院endl; cout 各种运算后的结果 endl; cout-运行时间:ctime(&t)endl; cout 【功能选择项】endl; cout endl; cout 1,输入多项式A和B 2,计算多项式A+B endl; cout 3,计算多项式A-B 4,计算多项式A*B endl; cout 5,计算多项式A/B 6,计算A在x处的值 endl; cout 7,计算多项式A的阶数 8,退出 endl; c
29、out endl;int i;Polynomial p1,p2,p3,p4,p5,p6,p7;Polynomial p1_1;Polynomial p2_2; couti;while(i!=1)cout请先建立多项式A和Bendl; couti; doswitch(i)case 1:p1.Clear();p2.Clear();p1_1.Clear();p2_2.Clear(); coutp1; coutp2; p1_1=p1.shunxu();/降幂 p2_2=p2.shunxu();/降幂 cout多项式A为:p1_1endl;cout多项式B为:p2_2endl; cout-1输入AB 2加 3减 4乘 5除 6求值 7求阶数 8退出endl;couti; if(i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电商平台客服人员客户投诉处理标准化手册
- 科学预防溺水,护航平安暑假,小学主题班会课件
- 智能制造生产线优化与改造指南
- 2026年中国科学院西安光机所大数据与人工智能中心招聘模拟试卷含答案详解
- 市场调研数据共享及分析合作联系函8篇
- 2026年东营区高层次人才选聘参考题库含完整答案详解(全优)
- 2026湖北恩施州宣恩县文化馆招聘公益性岗位人员2人参考题库及参考答案详解
- 珍爱生命学会自我保护的小学主题班会课件
- 索-板结构的非线性振动研究
- 水资源约束下城镇开发边界划定研究-以武威市为例
- 2026年高一英语小测试题及答案
- 2026河北保定数字城市投资发展集团有限公司公开招聘工作人员6人笔试备考题库及答案详解
- pe焊工考试试题及答案
- 选煤厂生产调度管理课件
- 《铁路建设项目首件工程评估管理办法》
- 中暑的护理及治疗
- JG 5091-1997钢丝绳柱形压制接头
- 中医疼痛方面课件教案
- (新版)中国心理卫生协会心理咨询师考试复习题库(浓缩400题)
- 四川省水电集团笔试题库
- 可持续棕榈油圆桌倡议组织RSPO供应链认证管理手册及程序文件
评论
0/150
提交评论