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: