Untitled
unknown
plain_text
4 years ago
2.6 kB
4
Indexable
class Polynomial { public: int *degCoeff; int capacity; Polynomial(){ this->degCoeff=new int[6]; this->capacity=5; } Polynomial (int capacity){ this->degCoeff=new int[capacity+1]; this->capacity=capacity; } Polynomial (Polynomial const &p){ int *newdeg=new int[p.capacity+1]; for(int i=0;i<=p.capacity;i++) newdeg[i]=p.degCoeff[i]; this->degCoeff=newdeg; this->capacity=p.capacity; } void setCoefficient(int deg,int coef){ if(deg>capacity){ int newcapacity=deg; int *newdeg=new int[newcapacity+1]; for(int i=0;i<=capacity;i++) newdeg[i]=degCoeff[i]; this->degCoeff=newdeg; this->capacity=newcapacity; degCoeff[deg]=coef; } else{ degCoeff[deg]=coef; } } Polynomial operator+(Polynomial const &P2){ int newcap=max(this->capacity,P2.capacity); Polynomial P3(newcap); for(int i=0;i<=newcap;i++){ if(i<=capacity && i<=P2.capacity) P3.degCoeff[i]=this->degCoeff[i]+P2.degCoeff[i]; else if(i<=capacity) P3.degCoeff[i]=this->degCoeff[i]; else P3.degCoeff[i]=P2.degCoeff[i]; } return P3; } Polynomial operator-(Polynomial const &P2){ int newcap=max(this->capacity,P2.capacity); Polynomial P3(newcap); for(int i=0;i<=newcap;i++){ if(i<=capacity && i<=P2.capacity) P3.degCoeff[i]=this->degCoeff[i]-P2.degCoeff[i]; else if(i<=capacity) P3.degCoeff[i]=this->degCoeff[i]; else P3.degCoeff[i]=-P2.degCoeff[i]; } return P3; } Polynomial operator*(Polynomial const &P2){ int newcap=this->capacity+P2.capacity; Polynomial P3(newcap); for(int i=0;i<=this->capacity;i++){ for(int j=0;j<=P2.capacity;j++){ P3.degCoeff[i+j]+=this->degCoeff[i]*P2.degCoeff[j]; } } return P3; } void operator=(Polynomial const &p){ int *newdeg=new int[p.capacity+1]; for(int i=0;i<p.capacity;i++) newdeg[i]=p.degCoeff[i]; this->degCoeff=newdeg; this->capacity=p.capacity; } void print(){ for(int i=0;i<=this->capacity;i++){ if(degCoeff[i]!=0) cout<<degCoeff[i]<<"x"<<i<<" "; } cout<<endl; } };
Editor is loading...