Question: in C++ Start with the polynomial.cpp file provided. This is a basic outline of the class, which reads the in the polynomial from the keyboard.

in C++ Start with the polynomial.cpp file provided. This is a basic outline of the class, which reads the in the polynomial from the keyboard. You must overload the multiplication operator to multiply polynomials together (i.e., FOIL arbitrary dimension polynomials1). Also overload for cout and make sure you follow exactly the formatting shown below.The program provided has no memory leaks, and your submission should not leak memory as well. In other words, if you create dynamic memory you also need to delete it somewhere in the code. [Hint: What is the relationship to the index and the power of x?] Example 1 (user input is underlined): What are the coefficients of first polynomial (lowest power first)? 1 2 3 What are the coefficients of second polynomial (lowest power first)? 4 5 6 (1) + (2)x^1 + (3)x^2 ... X ... (4) + (5)x^1 + (6)x^2 ------------ (4) + (13)x^1 + (28)x^2 + (27)x^3 + (18)x^4 Example 2 (user input is underlined): What are the coefficients of first polynomial (lowest power first)? 1 -2 1 What are the coefficients of second polynomial (lowest power first)? -1 (1) + (-2)x^1 + (1)x^2 ... X ... (-1) ------------ (-1) + (2)x^1 + (-1)x^2 Example 3 (user input is underlined): What are the coefficients of first polynomial (lowest power first)? 1 2 3 4 5 What are the coefficients of second polynomial (lowest power first)? 1 -2 1 -4 (1) + (2)x^1 + (3)x^2 + (4)x^3 + (5)x^4 ... X ... (1) + (-2)x^1 + (1)x^2 + (-4)x^3 ------------ (1) + (0)x^1 + (0)x^2 + (-4)x^3 + (-8)x^4 + (-18)x^5 + (-11)x^6 + (-20)x^7

Polynomial cpp

#include

#include

#include

#include

using namespace std;

class poly{

private:

int* coef;

int length;

public:

poly();

poly(int* c, int l);

~poly();

poly operator=(const poly& p);

poly(const poly& p);

friend istream& operator>>(istream& in, poly& p);

friend ostream& operator<<(ostream& out, poly p);

poly operator*(poly p);

};

int main()

{

poly p1, p2;

cout << "What are the coefficients of first polynomial (lowest power first)? ";

cin >> p1;

cout << "What are the coefficients of second polynomial (lowest power first)? ";

cin >> p2;

cout << p1 << endl; // MAKE THIS

cout << "... times... " << endl;

cout << p2 << endl; // MAKE THIS

cout << "------------ ";

poly p3 = p1 * p2; // MAKE THIS

cout << p3 << endl; // MAKE THIS TOO!

return 0;

}

poly::poly()

{

coef = new int[1];

coef[0] = 0;

length = 1;

}

poly::poly(int* c, int l)

{

length = l;

coef = new int[l];

for(int i=0; i < l; i++)

{

coef[i] = c[i];

}

}

poly poly::operator=(const poly& p)

{

length = p.length;

delete [] coef;

coef = new int[length];

for(int i=0; i < length; i++)

{

coef[i] = p.coef[i];

}

poly result(p.coef, p.length);

return result;

}

poly::poly(const poly& p)

{

coef = new int[p.length];

//*this = p; // this line was causing errors for some people

length = p.length;

for(int i=0; i < length; i++)

{

coef[i] = p.coef[i];

}

}

poly::~poly()

{

delete [] coef;

}

istream& operator>>(istream& in, poly& p)

{

string s;

getline(in, s);

int numberCount = 0;

bool onNumeric = false;

// first loop counts amount of numbers

for(int i=0; i < static_cast(s.length()); i++)

{

if(isdigit(s[i]) && !onNumeric)

{

numberCount++;

onNumeric=true;

}

if(!isdigit(s[i]) && onNumeric)

{

onNumeric=false;

}

}

// delete old poly & replace with correct size

delete [] p.coef;

p.length = numberCount;

if(numberCount == 0) // case if nothing entered (don't want create 0 length array...)

{

p.coef = new int[1];

p.coef[0] = 0;

return in;

}

p.coef = new int[numberCount];

// loop through again to fill array (similar logic to last loop)

onNumeric = false;

int previousIndex = 0; // used to find negative signs

int lastIndex=0;

int coefIndex=0;

for(int i=0; i < static_cast(s.length()); i++)

{

if(isdigit(s[i]) && !onNumeric)

{

previousIndex=lastIndex;

lastIndex=i;

onNumeric = true;

}

if(!isdigit(s[i]) && onNumeric)

{

string currentNumber = s.substr(lastIndex, i-lastIndex);

p.coef[coefIndex] = atoi(currentNumber.c_str());

string before = s.substr(previousIndex, lastIndex-previousIndex);

if(static_cast(before.find('-')) != -1)

{

p.coef[coefIndex] *= -1;

}

coefIndex++;

onNumeric = false;

}

}

// case if last character is part of the digit

if(onNumeric)

{

string currentNumber = s.substr(lastIndex);

p.coef[coefIndex] = atoi(currentNumber.c_str());

string before = s.substr(previousIndex, lastIndex-previousIndex);

if(static_cast(before.find('-')) != -1)

{

p.coef[coefIndex] *= -1;

}

}

return in;

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!