/I'm having trouble creating a constructor for degree and *coeffs as well as properly creating the dynamic arrays for the coefficients of the 2 polynomials a and b. I'm just concerned about getting the correct values.
My textbook only gives us eamples of constructos for eamples not well related to my HW question.Due tonight! any help would be much appreciated.
/

``````    #include <iostream>
#include <cstdlib>
using namespace std;
struct Polynomial
{
int degree;
int *coeffs;
Polynomial();
};
void outputPoly(Polynomial* p,char x);
Polynomial* multPoly(Polynomial* a,Polynomial* b);
void deletePoly(Polynomial* &p);

int main()
{
Polynomial *a;
Polynomial *b;
if(a.coeffs == NULL || b.coeffs == NULL)
{
cout << "Error: Insuficient memory...exiting program..\n";
exit(1);
}

}

Polynomial::Polynomial()
{
a.degree = 0;
b.degree = 0;
a.coeffs = 0;
b.coeffs = 0;
}

{
int deg1;
int* coefficients1;
coefficients1 = new int[deg1+1];
cout << "Enter degree of first polynomial:";
cin >> deg1;
cout << "Enter the coefficients of first polynomial starting with "
<< "the lowest degree term and ending with the highest degree term:";
for(int i =0;i<deg1+1;i++)
{
cin >> coefficients1[i]
}
/*---------------------------------------------------------------------*/
a = new Polynomial;
a -> degree = deg1;
a -> coeffs = coefficients1;
return a;
}
{
int deg2;
int* coefficients2;
coefficients2 = new int[deg2+1];
cout << "Enter degree of second polynomial:";
cin >> deg2;
cout << "Enter the coefficients of second polynomial starting with "
<< "the lowest degree term and ending with the highest degree term:";
for(int i =0;i<deg2+1;i++)
{
cin >> coefficients2[i];
}
/*----------------------------------------------------------------------*/
b = new Polynomial;
b -> degree = deg2;
b -> coeffs = coefficients2;
return b;
}
``````

/*
//Here is my error list

C:\MinGW\bin\g++ -pedantic -Wall -Wextra A7.cpp -o A7.exe
A7.cpp: In function ```int main()': A7.cpp:24: error: request for member```coeffs' in `a', which is of non-class type`Polynomial'
A7.cpp:24: error: request for member `coeffs' in`b', which is of non-class type ```Polynomial*' A7.cpp: In constructor```Polynomial::Polynomial()':
A7.cpp:34: error: ```a' was not declared in this scope A7.cpp:35: error:```b' was not declared in this scope
A7.cpp: In function ```Polynomial* readPoly1()': A7.cpp:53: error: expected```;' before '}' token
A7.cpp:55: error: ```a' was not declared in this scope A7.cpp: In function```Polynomial
A7.cpp:75: error: `b' was not declared in this scope
Exit code: 1
*/

2
Contributors
9
Replies
12
Views
5 Years
Discussion Span
Last Post by CodyM

i fixed missing ';', that error was not my problem though ofcoarse so ignore that error

Your constructor should look like this

``````Polynomial::Polynomial()
{
degree = 0;
coeffs = NULL;
}
``````

i remade constructor, did i fix it?

``````Polynomial::Polynomial() : degree(0),coeffs(0)
{}
``````

new error list:

C:\MinGW\bin\g++ -pedantic -Wall -Wextra A7.cpp -o A7.exe
A7.cpp: In function ```int main()': A7.cpp:26: error: request for member```coeffs' in `a', which is of non-class type`Polynomial'
A7.cpp:26: error: request for member `coeffs' in`b', which is of non-class type ```Polynomial*' A7.cpp: In function```Polynomial
A7.cpp:54: error: ```a' was not declared in this scope A7.cpp: In function```Polynomial* readPoly2()':
A7.cpp:74: error: `b' was not declared in this scope
Exit code: 1

thanks nathan! i've got rid of all my compiler errors but when i run program i get this error:

A7
This application has requested the Runtime to terminate it in an unusual way.
Exit code: 3

The problem looks like you are causing memory corruption. This `coefficients1 = new int[deg1+1];` need to come after `cin >> deg1;` in your readpoly function. This is also the case with your second function. Right now you are initalizing your array with a number from a variable that has not been initalized yet. If you get the size from the user first then declare the array you should be okay. you also need to change line 55 to `Polynomial * a = new Polynomial;`. Just an FYI both functions do exactly the same thing so you dont really need both functions.

You rock kind sir

NOTE DISREGARD THIS MESSAGE, my error does not occur where i say it has

I'm having trouble copy the temporary array coefficients1 to a->coeffs in this fct.Even though the value at coeffients1[0] is valid,a->coeffs[0] gets set to zero when copied.
ie.highest degree is 1

``````coffients1[0] = 2,coefficients1[1]=1
a->coeffs = coefficients
a->coeffs[0] = 0,a->coeffs[1] = 1

{
int deg1;

cout << "Enter degree of first polynomial:";
cin >> deg1;
cout << "Enter the coefficients of first polynomial starting with\n"
<< "the lowest degree term and ending with the highest degree term\n";
int* coefficients1;
coefficients1 = new int[deg1+1];
for(int i =0;i<deg1+1;i++)
{
cout << ":";
cin >> coefficients1[i];// a test used to examine values of coefficients1
}
/*---------------------------------------------------------------------*/
Polynomial * a = new Polynomial;
a -> degree = deg1;
a -> coeffs = coefficients1;//Error here when coefficients copies to a->coeffs
cout << "Degree:"<<a->degree;
cout << "cofficients;";
for(int j=0;j<a->degree+1;j++)//a test used to examine values of a->coeffs
{cout << a->coeffs[j];
}
delete []coefficients1;
return a;
}
``````

Edited by CodyM: was wrong about post

Here's my problem. the fct readPoly gets the values proerly but when main calls the fct a and b don't recieve the values of p.

``````#include <iostream>
#include <cstdlib>
//Why can't we get help during labs.....
using namespace std;
struct Polynomial
{
int degree;
int *coeffs;
Polynomial();
};
void outputPoly(Polynomial* p);
Polynomial* multPoly(Polynomial* a,Polynomial* b);
void deletePoly(Polynomial* &p);

int z = 1;//BAD PRACTICE, but i just wanted a quick way to identify which polynomial was being read into.
int main()
{
Polynomial *a;
Polynomial *b;
Polynomial *c;
a = new Polynomial;
b = new Polynomial;
int deg = 0;
if(a->degree >= b->degree)
{
deg = a->degree;
}
else{deg = b->degree;}
c = new Polynomial[deg+1];

a = readPoly();//ERROR:a does not equal the p that it was assigned
b = readPoly();//ERROR:b does not equal the p that it was assigned
c = a;
if(a-> coeffs == NULL || b-> coeffs == NULL)
{
cout << "Error: Insuficient memory...exiting program..\n";
exit(1);
}
cout << "\nInside main:\nDegree:"<<a->degree;
cout << "\naCofficients:";
for(int j=0;j<a->degree+1;j++)
{cout << a->coeffs[j];
}
cout << endl;
cout << "\nbCofficients:";
for(int j=0;j<b->degree+1;j++)
{cout << b->coeffs[j];
}
cout << endl;
cout <<"c->degree:"<< c->degree<<"\nc->coeffs:";
for(int j=0;j<c->degree+1;j++)
{cout << c->coeffs[j];
}
outputPoly(a);
outputPoly(b);
outputPoly(c);
//deletePoly(p);
return 0;
}

Polynomial::Polynomial() : degree(0),coeffs(NULL)//constructor
{}

{
int deg;

cout << "Enter degree of polynomial"<<z<<":";
cin >> deg;
cout << "Enter the coefficients of polynomial"<< z <<" starting with\n"
<< "the lowest degree term and ending with the highest degree term\n";
int* coefficients;
coefficients = new int[deg+1];
for(int i =0;i<deg+1;i++)
{
cout << ":";
cin >> coefficients[i];
}
/*---------------------------------------------------------------------*/
Polynomial * p = new Polynomial;
p -> degree = deg;
p -> coeffs = coefficients;
cout << "Degree:"<<p->degree;
cout << "\np->coeffs:";
for(int j=0;j<p->degree+1;j++)//a test used to examine values of p->coeffs
{cout << p->coeffs[j];
}
delete []coefficients;
z++;
return p;
}

{
int max = 0;
int min = 0;
int tracker = 0;
if(a->degree > b-> degree)//Determines which polynomial has a higher degree of a and b, because c degree should match higher degree
{
max = a-> degree;
min = b-> degree;
}
else
{
max = b-> degree;
min = a-> degree;
}
Polynomial* p;
p = new Polynomial[max+1];
for(int i = 0;i<min+1;i++)
{
p->coeffs[i] = a->coeffs[i] + b->coeffs[i];
tracker = i;
}
if(a->degree > b-> degree)//Determines which polynomial has a higher degree of a and b, because c degree should match higher degree
{
for(int j = 0;j<max-min;j++)
{
p->coeffs[j+tracker+1] = a->coeffs[j+tracker+1];
}
p->degree = a->degree;
}
else
{
for(int j = 0;j<max-min;j++)
{
p->coeffs[j+tracker+1] = b->coeffs[j+tracker+1];
}
p->degree = b->degree;
}
return p;
}

void outputPoly(Polynomial *p)
{
int deg = p->degree;
cout << "\nInside fct outputPoly:\nDegree:"<<p->degree;
cout << "\nCofficients:";
for(int j=0;j<p->degree+1;j++)
{
cout << p->coeffs[j];
}
cout << endl;
for(int i=0;i<deg+1;i++)
{
cout << p->coeffs[deg - i] << "x^" <<deg-i;
if(i<p->degree)
{
cout << "+";
}
}
cout << "\nCompleted outputPoly\n";
return;
}

void deletePoly(Polynomial* &p)
{
delete []p;
p = NULL;
}
``````

Edited by CodyM: change...

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.