我正在處理有關多項式的分配。其中一項任務是計算兩個多項式的和,並將結果返回給一個新的多項式。但是當我運行程序時,程序自行終止。當我試圖測試哪個部分是錯誤的,似乎創建動態數組的行是錯誤的。我不明白爲什麼,請幫忙。創建動態數組似乎會導致程序終止
這裏是頭文件。
class polynomial
{
private:
double* coefficient;
int degree;
public:
// CONSTRUCTOR member functions
polynomial(void);
polynomial(int degree, const double* coeff);
polynomial(const polynomial& p);
//DESTRUCTOR member function
~polynomial(void);
//ACCESSOR member functions
void print(void) const;
polynomial add(const polynomial& p) const;
double evaluate(double x) const;
//MUTATOR member functions
void scale(int scale);
};
這是關於構造函數的cpp文件。
polynomial::polynomial(void)
{
degree = 0;
coefficient = new double [degree+1];
coefficient[0] = 0;
}
polynomial::polynomial(const polynomial& p)
{
coefficient = new double [p.degree+1];
for (int i = 0; i < p.degree+1; i++)
coefficient[i] = p.coefficient[i];
degree = p.degree;
}
polynomial::polynomial(int degree, const double* coeff)
{
coefficient = new double [degree+1];
for (int i = 0; i < degree+1; i++)
coefficient[i] = coeff[i];
polynomial::degree = degree;
}
這裏是CPP銼的主要問題是在加載(常量多項式& P)const的一部分。其他人只是爲了更好地理解該計劃。
polynomial polynomial::add(const polynomial& p) const
{
int degree_diff;
if (degree >= p.degree)
{
int i;
degree_diff = degree - p.degree;
polynomial result; // The program terminates here.
result.coefficient = new double[degree+1];
for (i = 0; i < p.degree+1; i++)
result.coefficient[i] = coefficient[i] + p.coefficient[i];
while (degree_diff != 0)
{
result.coefficient[i] = coefficient[i];
degree_diff--;
i++;
}
result.degree = degree;
return result;
}
else // The case when (degree < p.degree)
{
int j;
degree_diff = p.degree - degree;
polynomial result;
result.coefficient = new double[p.degree+1];
for (int j = 0; j < degree+1; j++)
result.coefficient[j] = coefficient[j] + p.coefficient[j];
while (degree_diff != 0)
{
result.coefficient[j] = p.coefficient[j];
degree_diff--;
j++;
}
result.degree = p.degree;
return result;
}
}
我找不到爲什麼程序崩潰。請提供幫助。對於多項式「3 * x^5 + 2 * x^3 -x^2 + 7」,Fyi,Eg,其度爲5,係數陣列爲{7.0,0.0,-1.0,2.0,0.0,3.0}
爲什麼不使用std :: vector? –
您不會向我們展示構造函數的實現。爲什麼?這正是您確定崩潰的地步。我們應該如何幫助你,如果你隱藏了該程序的一部分? –
請顯示構造函數的實現。 –