====== Klasy i ich konstruktory. ====== ===== Zadania ===== ==== 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źnioną funkcję 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 [[http://pl.wikipedia.org/wiki/Algorytm_Euklidesa|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: {{:zajecia:po_2012_1:slownik_obiektowo3.png?800|}} Klasa **Slownik** zadeklarowana jest następująco: class Slownik { private: Drzewo drzewo; public: Slownik(); Slownik(ifstream &i); Slownik(char *filename); Dodaj(string slowo); Dodaj(char *slowo); Wyswietl(); }; Klasa **Drzewo** zadeklarowana jest następująco: class Drzewo { private: Element *korzen; Element* Dodaj(Element *e,string slowo); void Wyswietl(Element *e); void Usun(Element *e); public: Drzewo(); void Dodaj(string slowo); void Wyswietl(); ~Drzewo(); }; Deklaracja struktury **Element** struct Element { public: int ilosc; string slowo; Element *lewy; Element *prawy; Element(); Element(string slowo); Wyswietl(); };