Я программист на Java, но теперь мне нужно написать немного кода на c ++.Я изучил основы C ++ пару лет назад, так что я не очень подходит.
Я написал небольшой класс, который описывает полином.Вот оно:
#include "Polynom.h"
#include <iostream>
using namespace std;
Polynom::Polynom()
{
this->degree = 0;
this->coeff = new int[0];
}
Polynom::Polynom(int degree)
{
this->degree = degree;
this->coeff = new int[degree + 1];
}
Polynom::~Polynom()
{
delete coeff;
}
void Polynom::setDegree(int degree)
{
this->degree = degree;
}
void Polynom::setCoeffs(int* coeff)
{
this->coeff = &*coeff;
}
void Polynom::print()
{
int i;
for(i = degree; i >= 0; i --)
{
cout<<this->coeff[i];
if(i != 0)
cout<<"x^"<<i;
if(i > 0)
{
if(coeff[i - 1] < 0)
cout<<" - ";
else
cout<<" + ";
}
}
}
Хорошо, теперь я попытался прочитать степень и коэффициенты полинома и распечатать его в консоли.Вот код для этого:
#include <iostream>
#include "Polynom.h"
using namespace std;
int main()
{
int degree;
cout<<"degree = ";
cin>>degree;
int* coeff = new int[degree];
int i;
for(i = 0; i <= degree; i++)
{
cout<<"coeff[x^"<<i<<"] = ";
cin>>coeff[i];
}
Polynom *poly = new Polynom(degree);
//poly->setDegree(degree);
poly->setCoeffs(coeff);
cout<<"The input polynome is: ";
poly->print();
return 0;
}
При компиляции кода все в порядке.При запуске, если я даю четный градус, а затем задаю некоторые коэффициенты, программа работает нормально. Но : если я определяю нечетную степень (например, 3 или 5) и затем даю коэффициенты, программа не печатает полином и возвращает следующую ошибку:
malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Почему это происходит?Где я не выделил достаточно памяти для массива?Я погуглил эту ошибку и наткнулся на эту страницу , но упомянутое там решение мне не сильно помогло.
Может быть, вы можете увидеть другую проблему в моем коде?Буду очень признателен за вашу помощь.
Заранее спасибо.