Lista II, typy generyczne Zadania wprowadzające: 1. Napisz funkcję
Transkrypt
Lista II, typy generyczne Zadania wprowadzające: 1. Napisz funkcję
Lista II, typy generyczne Zadania wprowadzające: 1. Napisz funkcję, wyświetlającą na ekranie elementy tablicy, złożonej z liczb całkowitych. 2. Jw., ale w pętli zastosuj arytmetykę wskaźników: a) nie stosuj zmiennej w stylu unsigned i = 0 i warunku i < n, tylko skorzystaj z samych wskaźników, np. (poeksperymentuj) for(int* it = tab; it<tab+n; ++it) … b) skorzystaj z operatora wyłuskania: cout << *it << endl; 3. Jw., ale przekaż funkcji (jako argumenty) początek tablicy i koniec, tj. wskaźnik za ostatni element: void wypisz(int* pocz, int* kon) Zmodyfikuj warunek w pętli. Nie wyznaczaj rozmiaru tablicy, bazuj tylko na znajomości początku i końca. 4. Napisz podobne funkcje, w których będzie przekazywana: a) lista liczb całkowitych; b) wektor liczb rzeczywistych (dowolnej precyzji); c) tablica punktów (obiektów typu Point o dwóch polach: x i y); d) … e) spróbuj napisać funkcję szablonową, która przyjmuje tablicę obiektów (tj. wskaźnik początek tablicy i wskaźnik za ostatni element tablicy) dowolnego typu i wyświetla ją na ekranie. 5. Napisz klasę Tablica, przechowującą tablicę liczb rzeczywistych. Uwaga: przechowuj tablicę jako wskaźnik na pierwszy element i jako wskaźnik za ostatni element. Nie przechowuj jawnie jako pole rozmiaru tablicy. Zdefiniuj dla niej konstruktory: a) domyślny (początek i koniec wskazują na 0/nullptr); b) jednoargumentowy (argument typu unsigned), tworzący tablicę o podanym rozmiarze wypełnioną zerami; c) jednoargumentowy (argument jako liczba rzeczywista), tworzący tablicę 10 elementów, każdy element przyjmuje wartość argumentu; poeksperymentuj ze słowem kluczowym explicit d) dwuargumentowy (wskaźnik na początek i koniec istniejącej już tablicy), tworzącą i kopiującą elementy od tablicy źródłowej do nowej tablicy w środku obiektu klasy (kopiowanie głębokie); e) kopiujący. 6. Zdefiniuj funkcje/operatory jako składowe klasy Tablica: a) obliczającą rozmiar tablicy; b) zwracającą referencję na n-ty element tablicy; c) metody zwracające początek i koniec (jako wskaźnik za ostatni element) tablicy; d) przeładuj operator przypisania i porównania (dwie tablice są równe wtedy i tylko wtedy, gdy mają ten sam rozmiar i odpowiadające sobie poszczególne elementy); e) metodę sortuj, przyjmującą wskaźnik na funkcję porównującą (komparator) i sortującą daną tablicę. f) metodę wypisz, wypisującą na (podany jako argument) strumień wyjściowy kolejne wartości tablicy. Wykorzystaj funkcję w punktu 4d.