Autorské riešenie
Riešenie tejto úlohy si rozdelíme do dvoch častí:
Pre každého klienta potrebujeme evidovať aký úrad chce navštíviť a aké je jeho poradie na tomto úrade. Zoznam klientov by preto mal obsahovať zoznam dvojíc [úrad poradie]. Keďže pre každý úrad je samostatné poradie, mali by sme si pamätať, aké je poradie nového klienta pre každý úrad zvlášť. Toto poradie sa navyše na začiatku každého dňa vynuluje. Využijeme preto aj pomocnú procedúru novyDen. viem novyDen Procedúra na evidenciu klientov vyzerá potom nasledovne: viem evidujKlienta :urad Podľa toho, ktoré tlačidlo bolo na automate stlačené zvýšime počet klientov čakajúcich na príslušný úrad. Zároveň vytlačíme lístok pre klienta a pridáme ho do zoznamu klientov na koniec. Tým zabezpečíme, že v tomto zozname sú klienti v takom poradí, v akom prišli na úrad. To, pre ktorého klienta sa zobrazí výzva záleží od toho, ktorý úradník chce vybaviť ďalšieho klienta (presnejšie od úradov pre ktoré vybavuje klientov) a od poradia klientov v zozname čakajúcich klientov. Stačí nám teda prehľadávať od začiatku zoznam klientov a nájsť prvého, ktorého žiadosť vie úradník vybaviť. Zisťujeme, či úrad na ktorý čaká klient je jedným z úradov, pre ktoré úradník pracuje. Hneď ako takého klienta nájdeme, odstránim ho zo zoznamu čakajúcich klientov a zobrazíme pre neho výzvu. Procedúru môžeme následne ukončiť viem zavolajKlienta :priehradka Vaše zaujímavé riešenia a najčastejšie chyby Túto úlohy vyriešili správne dva tímy a jeden tím ju vyriešil takmer správne. Medzi najčastejšie chyby patrilo to, že ste si neuvedomili, že každý úrad má svoje poradie a že úradník môže vybavovať klientov pre rôzne úrady. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |