Test z programovania pre fanatikov 30.sept. 1999


 
  1. 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:
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ý.
  1. 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í.
  1. 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).
  1. 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.