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.

Podobne dokumenty