====== 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();
};