Доброго времени суток. Опираясь на различные источники в интернете, я нашёл программу, которую я пытался дополнить и модифицировать. В итоге работает всё, но нет единственной функции - подсчёта значения полинома от переменной x.
Вот код:
Код:
#include <iostream>
#include <iomanip>
#include <algorithm>
using namespace std;
class Polynom
{
private:
int s;
double *koef;
public:
Polynom();
Polynom(int as);
Polynom(const Polynom &);
~Polynom();
int gets();
double getkoef(int);
Polynom operator()(const Polynom &);
Polynom operator+(const Polynom &);
Polynom operator-(const Polynom &);
Polynom operator*(const Polynom &);
Polynom operator=(const Polynom &);
friend ostream &operator<< (ostream &stream, const Polynom &c);
friend istream &operator >> (istream &stream, Polynom &c);
double &operator()(int i)
{
return koef[i];
}
};
Polynom::Polynom()
{
koef = 0;
}
Polynom::~Polynom()
{
delete[] koef;
}
Polynom::Polynom(int as)
{
int i;
s = as;
koef = new double[s + 1];
for (i = 0; i <= s; i++)
{
koef[i] = 0;
}
}
Polynom::Polynom(const Polynom &f)
{
s = f.s;
koef = new double[s + 1];
for (int i = 0; i <= s; i++)
{
koef[i] = f.koef[i];
}
}
int Polynom::gets()
{
return s;
}
double Polynom::getkoef(int i)
{
if (i <= s)
{
return koef[i];
}
else
{
return 0.0;
}
}
Polynom Polynom::operator+(const Polynom &p)
{
int i;
if (s >= p.s)
{
Polynom p1 = *this;
for (i = 0; i <= s; i++)
{
p1.koef[i] = koef[i] + p.koef[i];
}
return p1;
}
else
{
Polynom p1(p.s);
for (i = 0; i <= s; i++)
{
p1.koef[i] = p.koef[i] + koef[i];
}
return p1;
}
}
Polynom Polynom::operator-(const Polynom &p)
{
int i;
if (s >= p.s)
{
Polynom p2 = *this;
for (i = 0; i <= p.s; i++)
{
p2.koef[i] = koef[i] - p.koef[i];
}
return p2;
}
else
{
Polynom p2(p.s);
for (i = 0; i <= s; i++)
{
p2.koef[i] = -p.koef[i] + koef[i];
}
for (i = s + 1; i <= p.s; i++)
{
p2.koef[i] = -p.koef[i];
}
return p2;
}
}
Polynom Polynom::operator*(const Polynom &p)
{
int i, j;
Polynom p3(s + p.s);
for (i = 0; i <= s; i++)
{
for (j = 0; j <= p.s; j++)
{
p3.koef[i + j] += koef[i] * p.koef[j];
}
}
return p3;
}
Polynom Polynom::operator = (const Polynom &p)
{
s = p.s;
delete[] koef;
koef = new double[s + 1];
for (int i = 0; i <= s; i++)
{
koef[i] = p.koef[i];
}
return *this;
}
istream &operator >> (istream &stream, Polynom &c)
{
int i;
for (i = 0; i <= c.s; i++)
{
stream >> c.koef[i];
}
return stream;
}
ostream &operator << (ostream &stream, const Polynom &c)
{
int i, s = 0;
for (i = 0; i <= c.s; i++)
{
if (c.koef[i] != 0)
{
s++;
}
}
if (s != 0)
{
if (c.koef[0] != 0)
{
stream << c.koef[0];
}
for (i = 1; i <= c.s; i++)
{
if (c.koef[i] < 0)
{
if(c.koef[i] != -1)
{
stream << c.koef[i] << "*X^" << i;
}
else
{
stream << " - " << "*X^" << i;
}
}
else
{
if (c.koef[i] != 0)
{
if(c.koef[i] != 1)
{
stream << " + " << c.koef[i] << "*X^" << i;
}
else
{
stream << " + " << "*X^" << i;
}
}
}
}
s << '\n';
}
else
{
stream << 0;
}
return stream;
}
int main()
{
setlocale(LC_ALL, "");
int n, m;
double x = 2;
cout << "Введите степень полинома p1: ";
cin >> n;
cout << "Введите степень полинома p2: ";
cin >> m;
Polynom p1(n), p2(m), ps, pr, pp;
cout << "Введите коэффициенты полинома p1: " << endl;
cin >> p1;
cout << "Введите коэффициенты полинома p2: " << endl;
cin >> p2;
cout << "Полином p1: " << p1 << endl;
cout << "Полином p2: " << p2 << endl;
cout << "Сумма полиномов p1 и p2 = " << (ps = p1 + p2) << endl;
cout << "Разность полиномов p1 и p2 = " << (pr = p1 - p2) << endl;
cout << "Произведение полиномов p1 и p2 = " << (pp = p1 * p2) << endl;
cout << "Присваивание: полином p2 = p1 = " << (p2 = p1) << endl;
cout << "Значение полинома p1(x) = " << p1(x) << endl;
return 0;
}
Кто знает, как её реализовать в данной программе, помогите пожалуйста!