How can I fix my program from crashing in C++?
- by Rachel
I'm very new to programming and I am trying to write a program that adds and subtracts polynomials. My program sometimes works, but most of the time, it randomly crashes and I have no idea why. It's very buggy and has other problems I'm trying to fix, but I am unable to really get any further coding done since it crashes. I'm completely new here but any help would be greatly appreciated.
Here's the code:
#include <iostream>
#include <cstdlib>
using namespace std;
int getChoice(void);
class Polynomial10
{
private:
double* coef;
int degreePoly;
public:
Polynomial10(int max); //Constructor for a new Polynomial10
int getDegree(){return degreePoly;};
void print(); //Print the polynomial in standard form
void read(); //Read a polynomial from the user
void add(const Polynomial10& pol); //Add a polynomial
void multc(double factor); //Multiply the poly by scalar
void subtract(const Polynomial10& pol); //Subtract polynom
};
void Polynomial10::read()
{
cout << "Enter degree of a polynom between 1 and 10 : ";
cin >> degreePoly;
cout << "Enter space separated coefficients starting from highest degree" << endl;
for (int i = 0; i <= degreePoly; i++)
{
cin >> coef[i];
}
}
void Polynomial10::print()
{
for(int i=0;i<=degreePoly;i++)
{
if(coef[i] == 0)
{
cout << "";
}
else if(i>=0)
{
if(coef[i] > 0 && i!=0)
{
cout<<"+";
}
if((coef[i] != 1 && coef[i] != -1) || i == degreePoly)
{
cout << coef[i];
}
if((coef[i] != 1 && coef[i] != -1) && i!=degreePoly )
{
cout << "*";
}
if (i != degreePoly && coef[i] == -1)
{
cout << "-";
}
if(i != degreePoly)
{
cout << "x";
}
if ((degreePoly - i) != 1 && i != degreePoly)
{
cout << "^";
cout << degreePoly-i;
}
}
}
}
void Polynomial10::add(const Polynomial10& pol)
{
for(int i = 0; i<degreePoly; i++)
{
int degree = degreePoly;
coef[degreePoly-i] += pol.coef[degreePoly-(i+1)];
}
}
void Polynomial10::subtract(const Polynomial10& pol)
{
for(int i = 0; i<degreePoly; i++)
{
coef[degreePoly-i] -= pol.coef[degreePoly-(i+1)];
}
}
void Polynomial10::multc(double factor)
{
//int degreePoly=0;
//double coef[degreePoly];
cout << "Enter the scalar multiplier : ";
cin >> factor;
for(int i = 0; i<degreePoly; i++)
{
coef[i] *= factor;
}
};
Polynomial10::Polynomial10(int max)
{
degreePoly=max;
coef = new double[degreePoly];
for(int i; i<degreePoly; i++)
{
coef[i] = 0;
}
}
int main()
{
int choice;
Polynomial10 p1(1),p2(1);
cout << endl << "CGS 2421: The Polynomial10 Class" << endl << endl << endl;
cout << "0. Quit\n" << "1. Enter polynomial\n" << "2. Print polynomial\n" << "3. Add another polynomial\n" << "4. Subtract another polynomial\n" << "5. Multiply by scalar\n\n";
int choiceFirst = getChoice();
if (choiceFirst != 1)
{
cout << "Enter a Polynomial first!";
}
if (choiceFirst == 1) {choiceFirst = choice;}
while(choice != 0)
{
switch(choice)
{
case 0:
return 0;
case 1:
p1.read();
break;
case 2:
p1.print();
break;
case 3:
p2.read();
p1.add(p2);
cout << "Updated Polynomial: ";
p1.print();
break;
case 4:
p2.read();
p1.subtract(p2);
cout << "Updated Polynomial: ";
p1.print();
break;
case 5:
p1.multc(10);
cout << "Updated Polynomial: ";
p1.print();
break;
}
choice = getChoice();
}
return 0;
}
int getChoice(void)
{
int c;
cout << "\nEnter your choice : ";
cin >> c;
return c;
}