Programovanie (2) v Jave
1-INF-166, LS 2016/17

Úvod · Pravidlá · Prednášky · Projekt · Netbeans · Odovzdávanie · Test a skúška
· Vyučujúcich môžete kontaktovať pomocou e-mailovej adresy E-prg.png (bude odpovedať ten z nás, kto má príslušnú otázku na starosti alebo kto má práve čas).
· Predvádzanie projektov bude v pondelok 5.6. od 9:00 do 12:00 a v utorok 6.6 od 12:00 do 13:30 (po skúške), oboje v miestnosti M217. Na termín sa prihláste v AIS. Ak robíte vo dvojici, prihlási sa iba jeden člen dvojice.
· Body zo záverečného testu sú na testovači. Poradie príkladov: P1: do šírky, P2: topologické, P3: výnimky, P4: iterátor, P5: testy, P6: strom. Bolo potrebné získať aspoň 20 bodov zo 40.
· Opravný test bude 19.6.2017 od 9:00 v miestnosti M-I. Na termín sa prihláste v AISe.
· Zapisovanie známok a osobné stretnutia ku skúške budú v utorok 13.6. 13:30-14:30 v M163 a v stredu 14.6. 14:00-14:30 v M163.


Cvičenia 10

Z Programovanie
Prejsť na: navigácia, hľadanie

Cieľom tohto cvičenia je precvičiť si zásobník, rad a vyfarbovanie súvislých oblastí v matici.

Zásobník a rad

  • Tento príklad si skúste spraviť na papieri, nemusíte to programovať.
  • Majme zásobník, do ktorého ukladáme dáta typu char. Do nasledujúceho úryvku kódu vložte na tri miesta príkaz cout << pop(s) tak, aby program vypísal text BAC
stack s;
init(s);
push(s, 'A');
push(s, 'B');
push(s, 'C');
  • Majme dva rady, do ktorých ukladáme dáta typu char. Do nasledujúceho úryvku kódu vložte na vhodné miesta príkazy tak, aby program vypísal text BAC. Môžete použiť len tri typy príkazov, každý aj viackrát:
    • cout << dequeue(q1);
    • enqueue(q1, dequeue(q2));
    • enqueue(q2, dequeue(q1));
queue q1, q2;
init(q1);
init(q2);
enqueue(q1, 'A');
enqueue(q1, 'B');
enqueue(q1, 'C');

Zátvorky

  • Do programu na kontrolu správne uzátvorkovaných výrazov z prednášky 17 dopíšte informatívne oznamy pre užívateľa, ktoré mu povedia, zátvorka na ktorom mieste v reťazci nemá ľavý pár alebo na ktorom mieste má ľavý pár iného typu ako pravý alebo koľko ľavých zátvoriek zostalo na konci neuzavretých. Po prvej takejto chybe už ďalšie nevypisujte.

Vyfarbovanie

  • Na prednáške 18 sme mali program, ktorý počítal počet ostrovov na mape. Upravte ho tak, aby našiel ostrov s najväčšou plochou a vyfarbil ho inou farbou ako ostatné ostrovy.
    • Upravte funkciu vyfarbi tak, aby vracala celé číslo udávajúce počet políčok, ktoré prefarbila. Tým zistíte plochu jednotlivých ostrovov.

Deque

  • Uvažujme abstraktný dátový typ deque, ktorý je kombináciou radu a zásobníka. Dovoľuje
    • pridávať na jeden aj druhý koniec postupnosti (funkcie addFirst, addLast)
    • mazať na jednom aj druhom konci postupnosti (funkcie removeFirst a removeLast), pričom zmazaný prvok vráti
    • pozrieť sa na prvý a posledný prvok bez toho aby sa zmazal (funkcie getFirst a getLast)
    • pomocné operácie isEmpty, init a destroy
  • Ako by ste pomocou deque implementovali zásobník a ako rad? (t.j. ktoré operácie sú ekvivalentné push, pop, resp. enqueue a dequeue)?
  • Prepíšte implementáciu radu pomocou poľa tak, aby poskytovala všetky operácie pre deque. Nezabudnite pomocou príkazu assert skontrolovať, že dátová štruktúra nie je preplnená pri pridávaní, ale ani prázdna pri vyberaní a vracaní prvku.