Spis treści

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:

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.