Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C++: Polynomial Class) Develop class Polynomial. The internal representation of

ID: 3822085 • Letter: C

Question

C++: Polynomial Class) Develop class Polynomial. The internal representation of a Polynomial
is an array of terms. Each term contains a coefficient and an exponent, e.g., the term
2x^4 has the coefficient 2 and the exponent 4. Develop a complete class containing proper constructor
and destructor functions as well as set and get functions. The class should also provide the following
overloaded operator capabilities:
a) Overload the addition operator (+) to add two Polynomials.
b) Overload the subtraction operator (-) to subtract two Polynomials.
c) Overload the assignment operator to assign one Polynomial to another.
d) Overload the multiplication operator (*) to multiply two Polynomials.
e) Overload the addition assignment operator (+=), subtraction assignment operator (-=),
and multiplication assignment operator (*=).

Need 5 files: main.cpp, Term.hpp, Term.cpp, Polynomial.hpp, Polynomial.hpp

Here is the current code thus far, need help with the Polynomial.hpp, Polynomial.cpp, and main.cpp. The term.hpp and term.cpp should be good.

//Term.hpp

#pragma once
#include <iostream>

using namespace std;

class Term {
   friend ostream &operator<<(ostream &, const Term &);
   friend istream &operator >> (istream &, Term &);
public:
   Term();
   Term(int c, int e);
   ~Term();
   void setCoefficient();
   void setExponent();
   void getCoefficient();
   void getExponent();
private:
   int coefficient;
   int exponent;
};

//Term.cpp

#include <iostream>
#include "polynomial.hpp"
#include "term.hpp"

using namespace std;
using std::setw;

Term::Term(int c, int e) //constructor
{
   setCoefficient(1);
   setExponent(2);
}

Term::~Term() //destructor
{

}

void Term::setCoefficient(int c)
{
   coefficient = c;
}

void Term::setExponent(int e)
{
   exponent = e;
}

void Term::getCoefficient()
{
   return coefficient;
}

void Term::getExponent()
{
   return exponent;
}

ostream &operator<<(ostream &output, const Term &term)
{
   output << "C:" << term.coefficient << " E:" << term.exponent;
   return output;
}

istream &operator >> (istream &input, Term &term)
{
   input.ignore();
   input >> term.coefficient;
   input.ignore(3) //skips the C: and the space
   input >> term.exponent;
   return input;
}

//polynomial.hpp

#pragma once
#include <iostream>
#include <vector>
#include "term.hpp"

using namespace std;

class Polynomial{
   friend ostream &operator<<(ostream &, const Polynomial &);
   friend istream &operator >> (istream &, Polynomial &);

public:
   Polynomial();
   ~Polynomial();
   Polynomial &operator+(const Polynomial&);
   Polynomial &operator-(const Polynomial&);
   Polynomial &operator=(const Polynomial&);
   Polynomial &operator+=(const Polynomial&);
   Polynomial &operator-=(const Polynomial&);
   void setCoefficient(int);
   void setExponent(int);
   int getCoefficient(int);
   int getExponent(int);

private:
   Term c[20];
   Term e[20];
   int index;

};

//polynomial.cpp

#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
#include "polynomial.hpp"
#include "term.hpp"

using namespace std;

Polynomial::Polynomial()
{
   srand(time(NULL));

   for (int i = 0; i < 20; i++)
   {
       c[i].setCoefficient(rand()%5);
       c[i].setExponent(rand()%5);
   }
}

Polynomial::~Polynomial()
{

}

int Polynomial :: getExponent(int index)
{
   //return e[index];
}

int Polynomial :: getCoefficient(int index)
{
   //return c[index];
}

Polynomial &Polynomial :: operator+(const Polynomial &plus)
{
}

Polynomial &Polynomial :: operator-(const Polynomial &subt)
{
}

Polynomial &Polynomial :: operator=(const Polynomial &equal)
{
}

Polynomial &Polynomial :: operator+=(const Polynomial &equal)
{
}

Polynomial &Polynomial :: operator-=(const Polynomial &equal)
{
}

//main.cpp

#include <iostream>
#include <cmath>
#include <cstdlib>
#include "polynomial.hpp"

using namespace std;

int main()
{
   Term t1;
   Term t2;
   Term t3;
   Polynomial p1;
   Polynomial p2;
   Polynomial p3;
  

   return 0;
}

Explanation / Answer

Term.hpp

#ifndef TERM_H
#define TERM_H

#include <iostream>

using namespace std;
class Term {
   void operator=(const Term &term);
friend ostream &operator<<(ostream &, const Term &);
friend istream &operator>>(istream &, Term &);
public:
Term();
Term(int c, int e);
~Term();
void setCoefficient(int c);
void setExponent(int e);
int getCoefficient();
int getExponent();
private:
int coefficient;
int exponent;
};

Term.cpp

#include <iostream>
#include "term.hpp"

using namespace std;
//using std::setw;

Term::Term(int c, int e) //constructor
{
setCoefficient(c);
setExponent(e);
}

Term::~Term() //destructor
{
}

void Term::setCoefficient(int c)
{
coefficient = c;
}
void Term::setExponent(int e)
{
exponent = e;
}
int Term::getCoefficient()
{
return coefficient;
}
int Term::getExponent()
{
return exponent;
}
void Term::operator=(const Term &term)
{
   coefficient=term.coefficient;
   exponent=term.exponent;
}
ostream &operator<<(ostream &output, const Term &term)
{
output << "Coefficient: " << term.coefficient << " Exponent: " << term.exponent;
return output;
}
istream &operator >> (istream &input, Term &term)
{
input.ignore();
input >> term.coefficient;
//input.ignore(3) //skips the C: and the space
input >> term.exponent;
return input;
}

Polynomial.hpp

#ifndef POLYNOMIAL_H
#define POLYNOMIAL_H

#include <iostream>
#include <vector>
#include "term.hpp"
using namespace std;
class Polynomial{
friend ostream &operator<<(ostream &, const Polynomial &);
friend istream &operator >> (istream &, Polynomial &);
public:
Polynomial();
~Polynomial();
int getSize();
void getTerm(int index);
bool addTerm(int c,int e);
bool deleteTerm(int c);
Polynomial &operator+(const Polynomial&);
Polynomial &operator-(const Polynomial&);
Polynomial &operator=(const Polynomial&);
Polynomial &operator+=(const Polynomial&);
Polynomial &operator-=(const Polynomial&);
Polynomial &operator*(const Polynomial&);
Polynomial &operator*=(const Polynomial&);
Term terms[20];
//Term c[20]; You do not have to make two arrays as the term already consists of coefficients and exponents
//Term e[20]; The polynomial would be the array of terms
int size; // size of the polynomial
};

Polynomial.cpp

#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
#include "polynomial.hpp"
#include "term.hpp"
using namespace std;

Polynomial::Polynomial()
{
   size=0;
/*srand(time(NULL));
for (int i = 0; i < 20; i++)
{
terms[i].setCoefficient(rand()%5);
terms[i].setExponent(rand()%5);
}*/
}

Polynomial::~Polynomial()
{
   delete []terms;
}

Term Polynomial :: getTerm(int index)
{
return terms[index];
}

bool Polynomial::addTerm(int c,int e)   //return true if term is added, else return false
{
   if(c==0)   // Term with exponent 0 would make the whole term 0 , 0*x^2=0
       return false;
  
   else
   {
       Term newTerm(c,e);
       if(size==0)
       {
           terms[0]=newTerm;
       }      
       else if(newTerm.getExponent()>terms[0].getExponent())
       {
           for(int i=size-1;i>=0;i--)
           {
               terms[i+1]=terms[i];
           }
           terms[0]=newTerm;
       }
       else if(newTerm.getExponent()<terms[size].getExponent())
       {
           terms[size+1]=newTerm;
       }      
       else
       {
           for(i=0;i<size;i++)
           {
               if(terms[i].getExponent()==e) // 2*x^3+4*x^3
               {
                   int sum=terms[i].getCoefficient()+c;
                   if(sum)
                       terms[i].setCoefficient(sum);   // 2*x^3+4*x^3 = 6*x^3
                   else
                       deleteTerm(e);       // 2*x^3 + -2*x^3 = 0
               }
               return true;
           }
           for(int i=0;i<size;i++)
           {
               if(terms[i].getExponent()<e)
               {
                   for(int j=size-1;j>i;j--)
                   {
                       terms[j+1]=terms[j];
                   }
                   terms[i]=newTerm;
                   break;
               }
           }
       }
       size++;
       return true;
   }
}

bool Polynomial::deleteTerm(int e)   // return true if terms is found and deleted, else return false
{
   if(size==0)
       return false;
   for(int i=0;i<size;i++)
   {
       if(terms[i].getExponent()==e)
       {
           for(int j=i;j<size;j++)
               terms[j]=terms[j+1];
           size--;
           return true;
       }
   }
   return false;
}

int Polynomial::getSize()
{
   return size;
}
Polynomial &Polynomial :: operator+(const Polynomial &plus)
{
   Polynomial p;
   for(int i=0;i<size;i++)
       p.addTerm(terms[i].getCoefficient(), terms[i].getExponent());
   for(int i=0;i<plus.getSize();i++)
       p.addTerm(plus.getTerm[i].getCoefficient(),plus.getTerm[i].getExponent());
   return p;
}
Polynomial &Polynomial :: operator-(const Polynomial &subt)
{
   Polynomial p;
   for(int i=0;i<size;i++)
       p.addTerm(terms[i].getCoefficient(), terms[i].getExponent());
   for(int i=0;i<subt.getSize();i++)
       p.addTerm(subt.getTerm[i].getCoefficient(),subt.getTerm[i].getExponent());
   return p;
}
Polynomial &Polynomial :: operator=(const Polynomial &equal)
{
   size=equal.getSize();
   for(int i=0;i<size;i++)
       addTerm(equal.getTerm[i].getCoefficient(),equal.getTerm[i].getExponent())
   return this;
}
Polynomial &Polynomial :: operator+=(const Polynomial &equal)
{
   for(int i=0;i<equal.getSize();i++)
       addTerm(equal.getTerm[i].getCoefficient(),equal.getTerm[i].getExponent());
   return this;
}
Polynomial &Polynomial :: operator-=(const Polynomial &equal)
{
   for(int i=0;i<equal.getSize();i++)
       addTerm(equal.getTerm[i].getCoefficient(),equal.getTerm[i].getExponent());
   return this;
}

Polynomial &Polynomial::operator*(const Polynomial &mul)
{
   Polynomial p;
   int c,e;
   int i,j;
   for(i=0;i<size;i++)
   {
       for(j=0;j<mul.getSize();j++)
       {          
           c = terms[i].getCoefficient()*mul.terms[j].getCoefficient();
           e = terms[i].getExponent()+mul.terms[j].getExponent();
           p.addTerm(c,e);
       }
   }
   return p;
}

Polynomial &Polynomial::operator*=(const Polynomial &mul)
{
   int c,e;
   int i,j;
   for(i=0;i<size;i++)
   {
       for(j=0;j<mul.getSize();j++)
       {          
           c = terms[i].getCoefficient()*mul.terms[j].getCoefficient();
           e = terms[i].getExponent()+mul.terms[j].getExponent();
           addTerm(c,e);
       }
   }
   return this;
}

Sorry but I could not make main file due to shortage of time. You can also try making polynomial using linked list, that would be more efficient.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote