Question: - Add to polynomial.h appropriate declarations of iterator and const _ iterator types and associated functions allowing access to a Polynomial object s terms. -
Add to polynomial.h appropriate declarations of iterator and constiterator types and associated functions allowing access to a Polynomial objects terms.
Replace the indexingbased code in polynomial.cpp with iteratorbased code.
Polynomial.h file
#ifndef POLYNOMIALH
#define POLYNOMIALH
#include
#include
#include
#include "term.h
class Polynomial
public:
Polynomial;
Polynomial int b int a ;
Polynomial std::initializerlist terms;
Polynomial int nCoeff, int coeff;
int getCoeffint power const;
int getDegree const;
Polynomial operatorconst Polynomial& p const;
Polynomial operatorint scale const;
Polynomial operatorTerm term const;
void operatorint scale;
Polynomial operatorconst Polynomial& p const;
bool operatorconst Polynomial& p const;
private:
int degree;
std::list terms;
void normalize;
friend std::ostream& operatorstd::ostream& const Polynomial&;
;
std::ostream& operatorstd::ostream& const Polynomial&;
inline Polynomial operatorint by const Polynomial& p
return p by;
inline bool operator!const Polynomial& p const Polynomial& q
return p q;
#endif
Polynomial.cpp file
#include "polynomial.h
#include
#include
using namespace std;
void Polynomial::normalize
if degree
terms.clear;
return;
std::list::iterator it terms.begin;
while it terms.end
if itcoefficient
it terms.eraseit;
else
it;
if termsbegin terms.end
degree terms.backpower;
else
degree ;
Polynomial::Polynomial
: degree coefficientsnullptr
Polynomial::Polynomial int b int a
: degree coefficientsnew int
coefficients b;
coefficients a;
normalize;
Polynomial::Polynomial Term term
: degreetermpower coefficientsnew inttermpower
for int i ; i degree; i
coefficientsi;
coefficientsdegree term.coefficient;
normalize;
Polynomial::Polynomial int nC int coeff
: degreenC coefficientsnew intnC
for int i ; i degree; i
coefficientsi coeffi;
normalize;
void Polynomial::normalize
while degree && coefficientsdegree
degree;
int Polynomial::getDegree const
return degree;
int Polynomial::getCoeffint power const
if power && power degree
return coefficientspower;
else
return ;
Polynomial Polynomial::operatorconst Polynomial& p const
if degree pdegree
return Polynomial;
int resultSize maxdegree pdegree;
int resultCoefficients new intresultSize;
int k ;
while k getDegree && k pgetDegree
resultCoefficientsk coefficientsk pcoefficientsk;
k;
for int i k; i getDegree; i
resultCoefficientsi coefficientsi;
for int i k; i pgetDegree; i
resultCoefficientsi pcoefficientsi;
Polynomial resultresultSize resultCoefficients;
delete resultCoefficients;
return result;
Polynomial Polynomial::operatorint scale const
if degree
return Polynomial;
Polynomial result this;
for int i ; i degree; i
result.coefficientsi scale coefficientsi;
result.normalize;
return result;
Polynomial Polynomial::operatorTerm term const
if degree
return Polynomial;
int results new intdegree term.power;
for int i ; i term.power; i
resultsi;
for int i ; i degree ; i
resultsiterm.power coefficientsi term.coefficient;
Polynomial result degree term.power, results;
delete results;
return result;
void Polynomial::operatorint scale
if degree
return;
for int i ; i degree; i
coefficientsi scale coefficientsi;
normalize;
Polynomial Polynomial::operatorconst Polynomial& denominator const
if degree denominator.degree
return Polynomial;
if this Polynomial
return this;
if denominatorgetDegree getDegree
return Polynomial;
int resultSize degree denominator.degree ;
int results new intresultSize;
for int i ; i resultSize; i
resultsi;
Polynomial remainder this;
for int i resultSize; i ; i
int remainderstCoeff remainder.getCoeffidenominator.getDegree;
int denominatorstCoeff denominator.getCoeffdenominatorgetDegree;
if remainderstCoeff denominatorstCoeff
resultsi remainderstCoeff denominatorstCoeff;
Polynomial subtractor denominator Termresultsi i;
remainder remainder subtractor;
else
break;
if remainder Polynomial
Polynomial result resultSize results;
delete results;
return result;
else
delete results;
return Polynomial;
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
