Najneskorší termín odovzdania: 26.11.2012 (pondelok) o 21:00
Odovzdávané súbory: ZadanaKorytnacka.java
Doplňujúce požiadavky:
Firma ComputerVision s.r.o. vytvorila nový softvér Vratnik++, ktorý dokáže rozpoznať počet ľudí vchádzajúcich a vychádzajúcich z budovy cez sledované dvere. Softvér vytvára záznamy do textového logovacieho súboru. Logovací súbor obsahuje pre každú udalosť vstupu/výstupu osôb cez dvere jeden záznam, ktorý je zapísaný v samostatnom riadku. Tento riadok sa skladá z troch medzerami oddelených častí:
IN, ak bol rozpoznaný vstup skupiny osôb do budovy, alebo OUT, ak bol rozpoznaný výstup skupiny osôb z budovy,
Príklady záznamov:
10:04:12 IN 2
11:03:15 OUT 1
Záznamy sú v logovacom súbore uložené usporiadané podľa času, kedy nastali.
Do triedy ZadanaKorytnacka pridajte metódu pocetOsobVBudove, ktorá vypočíta počet osôb v budove na základe záznamov v logovacom súbore. Metóda má dva parametre. Parameter logovaciSubor, ktorý obsahuje cestu a názov súboru s logovacími záznamami. Druhý parameter naZaciatku určuje, koľko osôb bolo v budove v momente, keď sa začalo logovať (zaznamenávať vstupy a výstupy osôb). V prípade, že sa logovací súbor nepodarí prečítať (napr. neexistuje) alebo ak obsahuje nekorektné záznamy, metóda nech vráti hodnotu -1. Pod nekorektnými záznamami myslíme to, že podľa záznamov vznikne stav, kedy je v budove záporný počet osôb.
V Jave je možné vytvárať komentáre dvoch typov. Ak vytvoríme komentár pomocou dvojice znakov //, tak sa obsah riadku od tohto miesta až do konca považuje za komentár. Okrem toho je možné vytvárať aj komentáre pomocou kombinácie /* a */. Tento typ komentárov však v tejto úlohe nebudeme uvažovať.
Do triedy ZadanaKorytnacka pridajte metódu odstranKomentare, ktorá zo zadaného java súboru odstráni všetky //-komentáre a výsledok zapíše do zadaného výstupného súboru.
Parameter vstup označuje cestu k súboru a názov súboru, z ktorého čítame komentovaný zdrojový kód napísaný v jazyku Java. Parameter vystup označuje cestu k súboru a názov súboru, do ktorého máme zapísať zdrojový kód po odstránení všetkých //-komentárov.
Pri riešení úlohy dajte pozor na to, že:
// obsahuje reťazcový literál (napr. máte niekde príkaz String s = "Znaky // nie su komentar";), tak sa nepovažujú za označenie začiatku komentára,
\".
Do triedy ZadanaKorytnacka pridajte metódu spirala, ktorá do zadaného súboru zapíše obsah číselného poľa vo forme matice (2-rozmerného poľa). Jednotlivé čísla z poľa sú v matici uložené špirálovite.
Význam parametrov:
subor - názov a cesta k súboru, kam chceme zapísať výstupné pole
cisla - pole s číslami, ktoré chceme zapísať do súboru
pocetRiadkov - počet riadkov, do koľkých chceme zapísať čísla; platí, že pocetRiadkov bezo zvyšku delí dĺžku poľa cisla.
Špirálovité uloženie: Čísla vo výstupnej matici sú uložené špirálovite, pričom špirála začína na indexe [0][0] v smere riadku na indexe 0 (vo vodorovnom smere).
Príklady:
spirala(???, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], 4):
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
spirala(???, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 4):
1 2 3 10 11 4 9 12 5 8 7 6
spirala(???, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 5):
1 2 3 4 14 15 16 5 13 20 17 6 12 19 18 7 11 10 9 8
Poznámka: Odporúčame vytvoriť si pomocné 2-rozmerné pole, ktoré budete vhodne napĺňať číslami zo vstupného poľa. Samotný zápis dvojrozmerného poľa (matice) do súboru je už jednoduchý - stačí sa inšpirovať úlohami o maticiach z prednášky.
Textové súbory vytvorené evaluátorom úloh majú konce riadkov kódované spôsobom, aký sa používa v Linuxe alebo MacOS. Niektoré textové editory v MS Windows (napr. Notepad/Poznámkový blok) nevedia takéto súbory korektne zobraziť. Pre ich korektné zobrazenie v MS Windows odporúčame výborný textový editor PSPad.
Pri riešení úlohy o odstraňovaní komentárov neodporúčame googlovať riešenia na internete, pretože: