Я пытаюсь перегрузить оператор сложения, чтобы добавить два многочлена. Моя идея состоит в том, чтобы сделать многочлен в виде двух массивов, один для коэффициентов и один для показателей. Добавление двух полиномов — это просто объединение двух массивов в более длинный массив. Я только что изучил указатели и амперсанд, но не знаю, как их эффективно использовать. Я получил ошибки, говорящие, что «выражение должно быть модифицируемым lvalue».
Функции геттера и сеттера будут использоваться для объединения членов одних и тех же показателей степени, и я еще не писал об этом.
#include <iostream>
#include "Polynomial.h"
using namespace std;
Polynomial::Polynomial(){
};
Polynomial Polynomial::operator + (const Polynomial &right) const
{
Polynomial Sum;
Sum.numberOfTerms = numberOfTerms + right.numberOfTerms;
int i = static_cast<int>(numberOfTerms);
int j = static_cast<int>(right.numberOfTerms);
for (int n = 0; n > i && n <= n + j; n++) {
coefficients[n] = right.coefficients[n]; //error saying expression must be a modifiable lvalue
exponents[n] = right.exponents[n];
}
return Sum;
}
void Polynomial::enterTerms() {
int coefficient=0;
int exponent=0;
cout << "Enter number of terms for the polynomial:";
cin >> numberOfTerms;
for (int i = 0; i < numberOfTerms; i++) {
cout << "Enter coefficient:\n";
cin >>coefficient;
coefficients[i] = coefficient;
cout << "Enter exponent:\n";
cin >> exponent;
exponents[i] = exponent;
}
}
void Polynomial::printPolynomial() const {
//Print the first term out, if exponent is 0, just print out the constant
if (exponents[0] == 0) {
cout << coefficients[0];
}
else{
cout << coefficients[0] << "x^" << exponents[0];
}
//Print from the second term to the last term, including a "+" in front of each term
for (int i = 1; i <= numberOfTerms; i++) {
if (exponents[i] == 0) {
cout <<"+"<< coefficients[i];
}
else {
cout << "+"<<coefficients[i] << "x^" << exponents[i];
}
}
}
int Polynomial::getNumberOfTerms() const {
return numberOfTerms;
}
int Polynomial::getTermCoefficient(int i) const {
return coefficients[i];
}
int Polynomial::getTermExponent(int i) const {
return exponents[i];
}
Это заголовочный файл
#ifndef POLYNOMIAL_H
#define POLYNOMIAL_H
#include <array>
using namespace std;
class Polynomial {
public:
static const int maxTerms = 100;
Polynomial();
Polynomial operator+(const Polynomial &)const;
void enterTerms();
void printPolynomial() const;
int getNumberOfTerms() const;
int getTermExponent(int) const;
int getTermCoefficient(int) const;
void setCoefficient(int, int);
//~Polynomial();
private:
size_t numberOfTerms;
array<int, maxTerms> exponents;
array<int, maxTerms> coefficients;
static void polynomialCombine(Polynomial &);
};
#endif