Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

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

Polynomial multiplication, 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 polynomials). Also overload for cout and make sure you follow the formatting shown below exactly. The program provided has no memory leaks, and your submission should not 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?]

polynomoal.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; } 

Example 1: What are the coefficients of first polynomial (lowest power first)? 1 2 3 (user inputs these values)

What are the coefficients of second polynomial (lowest power first)? 4 5 6 (user inputs these values)

(1) + (2)x^1 + (3)x^2

... times...

(4) + (5)x^1 + (6)x^2

...

(4) + (13)x^1 + (28)x^2 + (27)x^3 + (18)x^4

Example 2: 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

... times...

(-1)

...

(-1) + (2)x^1 + (-1)x^2

Example 3 : 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

... times...

(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

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Oracle Database 19c DBA By Examples Installation And Administration

Authors: Ravinder Gupta

1st Edition

B09FC7TQJ6, 979-8469226970

More Books

Students also viewed these Databases questions