С++. Пишу большую программу по классу многочленов и не могу никак написать функцию для поиска всех рациональных корней многочлена (включая кратные корни, дробные, отрицательные).
Вот вводные данные моего кода, в который эту функцию мне необходимо будет вставить:
#include
#include
#include
using namespace std;
class Polynomial {
private:
vector coefficients;
public:
// Конструктор по умолчанию
Polynomial() {}
// Конструктор с передачей коэффициентов
Polynomial(const vector& coeffs) : coefficients(coeffs) {}
// Перегрузка оператора сложения
Polynomial operator+(const Polynomial& other) {
vector resultCoeffs(max(coefficients.size(), other.coefficients.size()), 0);
for (int i = 0; i < coefficients.size(); ++i) {
resultCoeffs[i] += coefficients[i];
}
for (int i = 0; i < other.coefficients.size(); ++i) {
resultCoeffs[i] += other.coefficients[i];
}
return Polynomial(resultCoeffs);
}
// Перегрузка оператора вычитания
Polynomial operator-(const Polynomial& other) {
vector resultCoeffs(max(coefficients.size(), other.coefficients.size()), 0);
for (int i = 0; i < coefficients.size(); ++i) {
resultCoeffs[i] += coefficients[i];
}
for (int i = 0; i < other.coefficients.size(); ++i) {
resultCoeffs[i] -= other.coefficients[i];
}
return Polynomial(resultCoeffs);
}
// Перегрузка оператора умножения
Polynomial operator*(const Polynomial& other) {
vector resultCoeffs(coefficients.size() + other.coefficients.size() - 1, 0);
for (int i = 0; i < coefficients.size(); ++i) {
for (int j = 0; j < other.coefficients.size(); ++j) {
resultCoeffs[i + j] += coefficients[i] * other.coefficients[j];
}
}
return Polynomial(resultCoeffs);
}
// Перегрузка оператора вывода