Zadefinujte triedu TSkaut, v ktorej je uložené
meno
(20 znakový reťazec), rok (integer), pocet
(bajt) a 100 prvkové celočíselné pole prvky. Napíšte konštruktor
Citaj (s jedným parametrom –
textovým súborom), ktorý zo zadaného textového
súboru z momentálneho riadku načíta údaje do položiek objektu. Každý riadok
súboru obsahuje tieto informácie:
meno ukončené znakom ';'
rok narodenia ukončený ';'
maximálne 100 prvkovú postupnosť celých čísel
navzájom oddelených medzerou, ktorá je ukončená koncom riadku (aktuálne
načítaný počet prvkov treba uložiť do položky pocet)
Riadok môže vyzerať napr. takto:
Janko Hraško;1992;15 –4 128
0 555 15
Pre túto triedu zadefinujte aj deštruktor Uvolni.
Môžete predpokladať, že textový súbor (parameter konštruktora) je už
otvorený na čítanie a je korektný.
Napíšte funkciu Porovnaj s dvoma parametrami typu TSkaut,
ktorá vráti jednu z hodnôt vymenovaného typu (mensi, rovny,
vacsi)
podľa toho, v akej relácii sú položky meno príslušných inštancií.
Zadefinujte triedu TOddiel, ktorá obsahuje 1000-prvkové jednorozmerné
pole inštancií triedy TSkaut (v Turbo
Pascale smerníkov na inštancie) a počítadlo aktuálneho počtu prvkov. Okrem
konštruktora, ktorý inicializuje pole, napíšte metódu Zarad, ktorá
ako parameter dostane jeden objekt TSkaut (v Turbo Pascale smerník
naňho) a zaradí ho do poľa tak, aby prvky v poli boli stále utriedené vzostupne
podľa mena. Na porovnávanie dvoch objektov použite funkciu Porovnaj
(z druhého príkladu). Ak sa v poli nachádza objekt s rovnakým menom,
tak ho treba prepísať novým obsahom (starý objekt treba uvoľniť príslušným
deštruktorom).
Pre triedu TOddiel napíšte metódu-funkciu Hladaj
s jedným parametrom 20-znakovým reťazcom, ktorá vo svojom poli inštancií
TSkaut
nájde objekt s hľadaným menom a vráti jeho index v tomto poli. Ak taký
prvok nenájde, vráti 0. Hľadanie realizujte binárnym vyhľadávaním (pole
je utriedené) pomocou rekurzie, t.j. nepoužite cyklus.