Ćwiczenie 2
1
Definiowanie klas
Ćwiczenia to poświęcone są utrwaleniu umiejętności w definiowaniu i wykorzystaniu prostych klas. Obejmują m.in. ćwiczenia pozwalające utrwalić definiowanie konstruktorów, funkcji składowych spełniających rolę akcesorów i realizatorów.
Materiał teoretyczny, niezbędny dla zrozumienia prezentowanych przykładów zawierają materiały wykładowe dostępne online, w postaci dokumentu pdf, pod adresem: http://www.us.edu.pl/~siminski.
1.1 Ćwiczenie 1 — klasa RownanieKwadratowe
Dane jest równanie kwadratowe:
Ax2 + Bx + Cx = 0
Należy zaprojektować klasę RownanieKwadratowe, przechowującą współczynniki takiego równania i pozwalającą na obliczanie wyznacznika (delty) i miejsc zerowych.
Klasa posiada prywatne pola A, B, C, będące liczbami całkowitymi, reprezentujące współczynniki równania. Każde z pól posiada akcesory w postaci funkcji składowych, np. ustawA(), pobierzA(). Klasa powinna posiadać funkcje składową
delta() obliczającą deltę oraz trzy funkcje obliczające miejsca zerowe: jedną do
obliczania pierwiastka podwójnego (delta==0) oraz dwie osobne, do obliczania pierwiastków, gdy delta ma wartość dodatnią.
Obiekt ten może być wykorzystany w następujący sposób:
RownanieKwadratowe r; double num;
cout << ’Podaj A:’; cin >> num;
r.ustawA( num ); cout << ’Podaj B:’; cin >> num;
r.ustawB( num );
Obiekty reprezentujące pojęcia matematyczne
cout << ’Podaj C:’; cin >> num;
r.ustawC( num ); if( r.delta() > 0 )
cout << ”Pierwiastki rownania x1=” << r.obliczX1() << ” x2=” << r.obliczX2() << endl;
else
if(r.delta() = 0 )
cout << ”Pierwiastek podwójny x12=” << r.obliczX12() << endl; else
cout << ”Brak pierwiastkow rzeczywistych” << endl;
Klas powinna być wyposażona w konstruktor domyślny, trzyparametrowy konstruktor ogólny, co pozwoli deklarować obiekty klasy RownanieKwadratowe w następujący sposób:
RownanieKwadratowe r1; // Konstruktor inicjuje A=B=C=0;
RownanieKwadratowe r2(3,2,1); // Konstruktor inicjuje A=3,B=2,C=1;
Należy się zastanowić nad przypadkiem, gdy równanie staje się liniowym, tzn. A=0
i zaproponować rozwiązanie tego problemu.
1.2 Ćwiczenie 2 — układ równań liniowych
Dany jest układ równań liniowych
A1x + B1y = C1 A2x + B2y = C2
Rozwiązanie układu równań może polegać na wyliczeniu odpowiednich wyznaczników W, Wx, Wy a następnie ich iloczynów — zgodnie z informacjami poznanym na zajęciach z matematyki.
Należy zaprojektować i zaimplementować w języku C++ obiektowy program pozwalający na rozwiązywanie dowolnego układu takich równań. Program powinien umożliwiać wczytanie współczynników A1, B1, C1, B2, C2, następnie powinien wyznaczyć rozwiązania równań metodą wyznacznikową. Należy identyfikować i prawidłowo zareagować na sytuację, gdy układ jest nieokreślony.
Pełny, skomentowany kod źródłowy programu rozwiązującego układ równań, zawierający informację o autorach (maksymalnie dwie osoby)
należy przesłać na adres rromex@o2.pl. Przypominam, że praca ma
być wykonana (w obrębie sekcji) samodzielnie.
1.3 Co po tym ćwiczeniu należy umieć?
Zakładam, że wszystkie umiejętności zdobyte przy wykonywaniu ćwiczenia 1-go, zostały pogłębione i utrwalone.