Klasy i ich konstruktory.
Wielomian
W pliku nagłówkowym wielomian.h
zadeklaruj klasę Wielomian
zgodnie z opisem podanym na wykładzie.
class Wielomian { private : int st; double *wsp; public : Wielomian Pochodna(int ktora=1); Wielomian(); Wielomian(int st, double *wsp); Wielomian(Wielomian &); ~Wielomian(); };
W pliku źródłowym wielomian.c
zdefiniuj konstruktory, destruktor i metodę Pochodna()
.
Zaimplementuj metodę Wypisz()
, która wyświetli wielomian w terminalu podając liczby rzeczywiste z dokładnością do 2 miejsc po przecinku.
Przykład: f(x) = -1.32 x^3 + x + 3.12
Zaimplementuj metodę Wczytaj()
, która wczyta z terminala współczynniki wielomianu.
Zaimplementuj prywatny konstruktor Wielomian(int stopien)
, który przydziela tablicę na współczynniki wielomianu ale jej nie inicjuje.
Zaimplementuj zaprzyjaźnione funkcje Dodaj
i Iloczyn
Wielomian Dodaj(Wielomian &, Wielomian &); Wielomian Iloczyn(Wielomian &, Wielomian &);
Liczby wymierne
W pliku wymierna.h
zadeklaruj klasę wg. wzoru:
class Wymierna { private : long licznik, mianownik; long NWD(long a, long b); public : Wymierna(Wymierna &w); Wymierna(long licznik,long mianownik); Wymierna(long licznik); void Wczytaj(); void Wypisz(); Wymierna Dodaj(Wymierna w); Wymierna Pomnoz(Wymierna w); };
W pliku wymierna.c
zdefiniuj wymagane metody i napisz program testujący poprawność działania.
Metoda NWD()
znajduje największy wspólny dzielnik dwóch liczb całkowitych. Wykorzystaj algorytm Euklidesa aby przechowywać liczby wymierne w skróconej postaci.
Zaimplementuj operacje dodawania i mnożenia jako zaprzyjaźnione funkcje zwracające referencje do nowego obiektu klasy Wymierna.
Słownik
Przetransformuj program z poprzednich zajęć do postaci obiektowej. Rozbij zadanie na 3 obiekty:
- Dictionary - reprezentuje słownik. Odpowiednie metody pozwalają utworzyć słownik z danych pobranych z pliku tekstowego lub ze strumienia wejściowego.
- Tree - reprezentuje drzewo przechowujące wyrazy. Dostarcza metodę dodającą wyraz (napis) do kolekcji wstawiając go w porządku alfabetycznym.
- Node - reprezentuje pojedynczy węzeł drzewa.
Klasa Dictionary (slownik) zadeklarowana jest następująco:
class Dictionary { Tree t; string getword(istream &i); public: Dictionary(); Dictionary(const char *filename); void Read(istream &i); void Print(); ~Dictionary(){}; };
Klasa Tree (drzewo) zadeklarowana jest następująco:
class Tree { private: Node *root; Node *Add(Node *k,string word); void Free(Node *k); void Print(Node *k); public: Tree(); void Add(string word); void Print(); ~Tree(); };
Deklaracja struktury Node (element)
class Node { public: int count; string word; Node *left; Node *right; Node(); Node(string _word); void Print(); };
W klasie Node
wszystkie pola są publiczne. W tym przypadku jest to wygodne, jednak łamie zasadę hermetyzacji.
Spróbuj poprawić program tak aby pola tej klasy (zwłaszcza pola left
i right
) nie były publicznie dostępne.