Wielomian $n$-tego stopnia funkcją postaci
$$ f(x) = a_n x^n + a_{n-1} x^{n-1} + \ldots + a_1 x + a_0 $$
Zaimplementuj klasę reprezentująca wielomiany.
W pliku nagłówkowym wielomian.h
zadeklaruj klasę Wielomian
class Wielomian { private : int st; double *wsp; public : Wielomian(); Wielomian(int st, double *wsp); Wielomian(const Wielomian &); Wielomian Pochodna(int ktora=1); void Wypisz(); ~Wielomian(); };
Pole prywatne wsp
to adres tablicy zawierającej współczynniki wielomianu $a_0, a_1, \ldots, a_n$. Wielomian stopnia $n$ posiada $n+1$ współczynników.
W pliku źródłowym wielomian.c
zdefiniuj konstruktory, destruktor i metody składowe klasy Wielomian
:
Wielomian(int st, double *wsp);
inicjujący wielomian stopnia st
o współczynnikach wsp
Pochodna()
zwracającą nowy wielomian, który jest równy pochodnej wielomianu pierwotnego. Pochodna 1-szego stopnia wielomianu wynosi: Pochodna(int stopien)
, która zwraca wielomian będący pochodną stopnia stopien
Wypisz()
, która wyświetla wielomian w terminalu. Współczynniki wielomianu wypisz z dokładnością do 2 miejsc po przecinku. f(x) = -1.32 x^3 + x + 3.12
Dodaj do implementacji wielomianu:
Wielomian(int stopien)
, który przydziela tablicę na współczynniki wielomianu ale jej nie inicjuje. Wykorzystaj ten konstruktor na liście inicjalizacji w innych konstruktorach aby wyeliminować dublujące się w konstruktorach instrukcje.
Zaimplementuj funkcję globalną Dodaj
, która będzie zaprzyjaźniona z klasą Wielomian
. Funkcja ta zwraca nowy wielomian stanowiący sumę wielomianów podanych w argumentach.
Wielomian Dodaj(const Wielomian &a, const Wielomian &b);
Uzupełnij implementację klasy Wielomian
o następujące elementy:
Wczytaj()
, która wczyta nową zawartość wielomianu. Użytkownik podaje stopień wielomianu oraz wszystkie współczynniki. Jeżeli wielomian miał już jakąś zawartość, to zostanie ona nadpisana.w1
i w2
Wielomian Iloczyn(const Wielomian &w1, const Wielomian &w2);
Wynikiem iloczynu wielomianów stopnia $n$ i $m$ bedzie wielomian stopnia $n+m$ o współczynnikach
$$ c_i = \sum_{j=0}^{i} a_jb_{i-j} \qquad \text{dla} \quad 0 \leq i \leq n+m $$
Napisz program, który:
Wczytaj()
) Iloczyn()
)
Rozwiązanie w postaci plików nagłówkowych *.h
i źródłowych *.cpp
umieść w Moodle Zadanie 3