Składnia
class Bazowa { // definicja klasy }; class Pochodna: public Bazowa { // definicja klasy };
1. Utwórz klasę pochodną klasy Wielomian
o nazwie Parabola
. Kod źródłowy klasy Wielomian
znajdziesz w zakładce pliki lub w repozytorium GitHub.
Parabola jest szczególnym rodzajem wielomianu, którego stopień wynosi 2. Dla paraboli możemy zdefiniować specyficzne operacje jak, np. wyznaczenie miejsc zerowych, wyznaczenie punktu ekstremalnego, itp.
private
do protected
delta
zawierające wartość rzeczywistą równą $$ \Delta = b^2 - 4ac$$
2. Dla klasy Parabola
zaimplementuj następujące operacje (dostępne publicznie):
$$x_1 = \frac{-b - \sqrt{\Delta}}{2a} \qquad x_2 = \frac{-b + \sqrt{\Delta}}{2a}$$
ObliczWartosc
, która dla danej w argumencie wartości rzeczywistej x
zwróci wartość wielomianu $f(x)$.
4. Napisz program, który wykorzysta klasę Parabola
do wyznaczenia i wypisania wartości miejsc zerowych $x_1$ i $x_2$, wartość ekstremum $x_e$ oraz wartości funkij w punktach $f(x_1)$, $f(x_2)$ oraz $f(x_e)$ dla dowolnej paraboli o współczynnikach $a$, $b$ i $c$ podanych przez użytkownika. Przetestuj działanie dla funkcji $f(x) = 0.1x^2 - 100x + 0.1$
Diagram klas UML
5 . Zaimplementuj klasę pochodną, dziedziczącą po klasie Parabola
, która zastępuje implementację funkcji wyznaczającej pierwiastki i wykorzystuje do obliczeń wzory Viète’a:
6. Przetestuj działanie programu wyznaczającego miejsca zerowe funkcji kwadratowej wykorzystując klasę pochodną z punktu 5.
Diagram klas UML
Utwórz klasę pochodną klasy Wielomian
o nazwie Linia
reprezentującą wielomian stopnia pierwszego
$$y=ax+b$$
Zaimplementuj metody umożliwiające następujące operacje na obiektach klasy Linia
:
PunktPrzeciecia(const Linia &l)
, która zwraca współrzędne przecięcia się z linią l
daną w argumencie funkcji. Dwie linie $y=a_1x+b_1$ i $y=a_2x+b_2$ przecinaja się w punkcie $$x = -\frac{b_2-b_1}{a_2-a_1}$$
Napisz program, który wykorzysta klasę Linia
oraz funkcję wyznaczającą punkt przecięcia linii prostych do rozwiązania układu równań postaci
$$
\left\{\begin{array}{l}
a_1 x + b_1 y = c_1 \\
a_2 x + b_2 y = c_2 \\
\end{array}\right.
$$
Dla wartości rzeczywistych $a_1, b_1, c_1, a_2, b_2, c_2$ podanych przez użytkownika program wypisuje wartość $x$ i $y$ stanowiące rozwiązanie powyższego układu równań. Zakładamy, że układ równań zawsze posiada rozwiązanie, tj. obie linie proste nie są równoległe i posiadają jeden punkt przecięcia.
Diagram klas UML
Przykład działania programu:
Podaj wspolczynniki a, b, c pierwszego rownania 2 8 4 Podaj wspolczynniki a, b, c drugiego rownania 1 1 2 Rozwiazaniem bedzie przeciecie linii prostych: f(x) = -0.25 x +0.50 f(x) = -1.00 x +2.00 Rozwiazanie x = 2 y = 0
Rozwiązanie w postaci plików nagłówkowych *.h
i źródłowych *.cpp
umieść w Moodle Zadanie 6