1. Zaimplementuj strukturę Książka o polach

Transkrypt

1. Zaimplementuj strukturę Książka o polach
Zajęcia 12.
Wszystkie zadania są samodzielne (punktacja na końcu).
1. Zaimplementuj strukturę Książka o polach:
1. tytuł: string
2. waga: double
3. wielkość: double
2. Zaimplementuj strukturę Półka, która będzie pozwalała na przechowywanie książek w
sposób uporządkowany tzn. każda książka na półce zna książkę po swojej lewej i prawej
stronie (lista dwukierunkowa). Innymi słowy, półka przechowuje listę książek. Ilość książek
na płce może być dowolna, ale łączna ich waga i wielkość nie może przekroczyć
ustalownego zakresu przechowywanego w polach Półki:
1. max_waga: double
2. max_wielkosc: double
Może warto przechowywać również aktualną wagę i wielkość wszystkich książek na półce.
3. Półka powinna udostępniać metody dodawania i pobierania książek z półki:
1. bool dodaj(Książka k, bool zLewej = true) – Metoda dodaje książkę na pierwszą pozycję
od lewej jeśli zLewej=true (jest to argument z wartością domyślną), albo pierwszą
pozycję od prawej jeśli zLewej = false. Jeśli łączna waga lub wielkość książek na półce
po dodaniu nowej pozycji przekroczy maxymalny zakres półki, to książki proszę nie
dodawać i zwrócić z metody false, w przeciwnym razie zwracamy true
2. bool dodaj(Książka k, Książka sąsiad, bool lewySąsiad = true) – dodaje książkę k na
pólkę z lewej strony książki sąsiad (jeśli lewySąsiad = true) albo z prawej strony książki
sąsiad (jeśli lewySąsiad = false). Jak wyżej metoda zwraca true jeśli uda się książkę
dodać.
3. Książka pobierz(string początekTytułu) – zwraca (nie usuwa) pierwszą od lewej książkę
z półki, której tytuł zaczyna się od początekTytułu (jeśli nie ma to null).
4. void usun(string doWagi) – usuwa z półki wszystkie książki, które mają wagę nie
większą niż argument doWagi.
5. void usun(bool (*filtr)(Książka k)) – usuwa z półki wszystkie książki spełniające
predykat filtr. Proszę przetestować na różnych predykatach.
4. Prosę napisać funkcje globalne
1. void zapisz(Półka p, string plik) – zapisuje stan półki do pliku o nazwie plik
2. Półka utwórz(string plik) – odtwarza i zwraca Półkę na podstawie informacji zawartych
w pliku plik
Format pliku może być dowolny z tym że powinna być możliwość odtworzenia półki
metodą utwórz().
Do zdobycia łącznie 4 punkty:
zad 1 + zad 2 = 1 pkt
zad 3.1 + zad 3.2 = 1pkt
zad 3.3 + zad 3.4 + zad 3.5 = 1 pkt
zad 4 = 1 pkt