logo - 刷刷题
下载APP
【简答题】

请使用“答题”菜单或使用VC6打开考生文件夹proj3下的工程proj3,其中包含了类Polyno-mial(“多项式”)的定义。形如5x4+3.4x2-7x+2代数式称为多项式,其中的5为4次项系数,3.4为2次项系数,-7为1次项系数,2为0次项(常数项)系数。此例缺3次项,意味着3次项系数为0,即省略了0x3。在Polynomial中,多项式的各个系数存储在一个名为coef的数组中。例如对于上面的多项式,保存在coef[0]、coef[1]、…、coef[4]中的系数依次为:2.0、-7.0、3.4、0.0、5.0,也即对于i次项,其系数就保存在coef[i]中。作为成员函数重载的运算符“+”用于计算两个多项式的和,并返回作为计算结果的那个多项式。请补充完成文件Polynomial.cpp中重载运算符函数operator+的定义。此程序的正确输出结果应为: p1+p2的结果:7.3X^4+20.6X^3-41.2X^2-2.4X+5 p2+p3的结果:-2.3X^5+14.6X^4+12.8X^3+2.8X^2+0.2X+1 注意:只需要在operator+的//********333********和//********666********之间填入若干语句,不要改动程序中的其他内容。 //源程序 //主函数#include"Polynomial.h"int main(){ double p1[]={5.0,3.5,-41.2,7.8}, p2[]={0.0,-5.9,0.0,12.8,7.3}, p3[]={1.0,6.1,2.8,0.0,7.3,-2.3}; Polynomial poly1(p1, sizeof(p1)/sizeof(double)), poly2(p2, sizeof(p2) /sizeof(double)), poly3(p3, sizeof(p3) /sizeof(double)); cout<<"p1+p2的结果:"<<(polyl+poly2).tostring()<<endl; cout<<"p2+p3的结果:"<<(poly2+poly3).tostring()<<endl; // writeToFile("K:\\b10\\61000102\"); return 0:}//Polynomial.cpp函数#include"Polynomial.h"#include <strstream>#include <cmath>const char*Polynomial::tostring() const{//将多项式转换成用于输出的字符串 static char s[1000]; s[0]=0; strstream buf(s,1000); for(int i=num_of_terms-1;i>=0;i--){ if(coef[i]==0.0) continue, //0系数项不输出 if(coef[i]<0.0) buf<<"-"; //负系数先输出"-" else if(strlen(s)==0) buf<<" "; else buf<<"+": buf<<fabs(coef[i]); if(i>0){ buf<<"X": if(i>1)buf<<"^"<<i; } } buf<<ends: return buf.str();}Polynomial Polynomial:: operator+(const Polynomial &x) const} double c[100]={0.0};//存放结果系数的数组,所有元素初始化为零。假定项数不会超过100 //下面的n为两个操作数中项数的较大者 int n=(num_of_terms>=x.num_of_terms num_of_terms:x.num_of_terms); //将两个多项式的对应系数之和存放到数组c的对应单元中 //********333******** //********333******** while(n>1&&c[n-1]==0.0)n--;//去除无效的(系数为0的)最高次项 return Polynomial(c,n);}

举报
参考答案:
参考解析:
.
刷刷题刷刷变学霸
举一反三

【单选题】下面是重载为非成员函数的运算符函数原型,其中错误的是

A.
MyClassoperator*(MyClass);
B.
MyClassoperator+(MyClass,int);
C.
MyClass&operator-=(MyClass&,MyClass);
D.
MyClass&operator=(MyClass&,MyClass);