Programovanie III, Algorimy v Jave, cvičenia zimný semester 2009/2010

Povinné úlohy:


Úloha pre skupinu 4, cvičenie 6:

Úloha pre skupinu 4 (Pondelok 18:10 F1-248)
Cvičenie 6:
Úloha na pondelok 3.novembra:
Vyriešte príklad o grafoch z Cvičenia 6:

  • Trieda DataPourVous obsahuje popis grafu, ktorého vrcholy sú očíslované indexami 0 .. N-1.
    - Graph(int[][] N) je konštruktor, ktorý vytvorí graf s N vrcholmi z poľa, príklad viď konštanta graph v triede DataPourVous,
    - boolean hasEdge(int u, int v) vráti true, ak existuje hrana medzi vrcholmi u a v, inak false,
    - boolean removeEdge(int u, int v) odstráni hranu medzi vrcholmi u a v a vráti true, ak tam hrana predtým bola, inak false,
    - boolean addEdge(int u, int v) pridá hranu medzi vrcholy u a v a vráti true, ak tam hrana už aj predtým bola, inak false,
    - int getDegree(int v) vráti stupeň vrchola v,
    - boolean isConnected() vráti true, ak je graf súvislý, inak false,
    - int distance(int u, int v) vráti vzdialenosť vrcholov u a v alebo -1, ak medzi týmito vrcholmi neexistuje žiadna cesta.


  • [Odovzdať riešenie úlohy]


    Úloha pre skupinu 4, cvičenie 7:

    Úloha na pondelok 10.novembra, 18:10:

    Príklad "advanced minesweeper"
    Zadanie vychádza z hry známej ako Míny (Minesweeper) známej napr. z MS Windows
    Načítajte súbor miny.in.
    Spracujte súbor tak, že ohodnotíte každé políčko podľa toho, koľko mín je v jeho okolí (osem okolie).
    Teda každé políčko, na ktorom nie je mína, môže mať hodnotu 0 až 8.
    Do súboru miny.out vypíšte ohodnotené mínové pole.

    Štruktúra súboru je nasledovná:
    Prvé dva riadky obsahujú čísla - šírka a výška hracieho pola
    Ďalej nasleduje obdĺžnik znakov . a B
    Políčko označené B predstavuje mínu.
    Políčko označené . predstavuje voľné miesto.
    12
    10
    ....B....B..
    .B..........
    .......BB...
    ..........B.
    ...B........
    .......B.B..
    .B..........
    ..........BB
    ..B...B.....
    .........B..
    

    Ak informatik niečo nevie, informuje sa u kolegov !
    Odporúča sa riešiť aj ostatné príklady z cvičenia 7, je vysoká pravdepodobnosť, že niečo podobné bude na budúcej rozcvičke.

    A nezabudnite si do pondelka preriešiť minuloročný midterm !
    Už v pondelok 12:20 budete bojovať o 20 bodov !
    A bez tréningu nebudete mať veľké šance na dostatok bodov !



    [Odovzdať riešenie úlohy]


    Úloha pre skupinu 4, cvičenie 8:

    Úloha na pondelok, 24 novembra, 18:10

    Vytvorte program, ktorý načíta a spracuje súbory k_in.txt a h_in.txt a vytvorí súbory k_out.txt, resp. h_out.txt
    Štruktúra súborov je nasledovná :
    V každom riadku sú tri údaje: Stĺpec Riadok Znak
    napr.
    8 0 -
    14 3 |
    13 7 /
    Výsledný súbor je textový súbor, ktorý má
    v riadku 0 a stĺpci 8 znak -
    v riadku 3 a stĺpci 14 znak |
    v riadku 7 a stĺpci 13 znak /
    Výsledkom spracovania súboru k_in.txt je teda súbor k_out.txt, a výsledkom spracovania súboru h_in.txt je...zistíte sami.


    [Odovzdať riešenie úlohy]


    Úloha pre skupinu 4, cvičenie 9:

    Riešenie rozcvičky 8 "zlepovanie súborov" + súbor s dátami data.zip a výsledný zlepený súbor zlepenec.jpg

    Predchádzajúca domáca úloha viacerim z vás nefungovala korektne.
    Od vynechania posledného riadku/stĺpca, cez prevrátené osi, zlé parsovanie, nefunkčnosti kvôli prístupu mimo vyhradené polia až po neidentifikovateľné výstuy.
    Väčšina z vás si je vedomá nedostatkov, ktoré v úlohe má.
    Ak vám záleží na bodoch, pozrite sa do vašich odovzdaných riešení poriadne a skúste mi navrhnúť opravu.

    Zadanie domácej úlohy:
    Graficky (applet) Simulujte pohyb N guličiek v obdľžnikovej krabici,
    pričom každú reprezentujte jedným vláknom (thread).
    Každá gulička má svoju vlastnú rýchlosť, farbu a smer.
    Guličky majú zanedbateľnú veľkosť a odrážajú sa od stien krabice
    ale i navzájom od seba v čo najvierohodnejšie v duchu "uhol odrazu sa rovná uhlu dopadu".
    Vždy po M časových jednotkách prihoďte do krabice na náhodné miesto s náhodným smerom a rýchlosťou ďalšiu guličku, a simulujete viac guličiek.

    Problémy, na ktoré možno natrafíte:
    - guličky môžu zostať po náraze v sebe "zaseknuté"
    Ak má gulička príliš veľkú rýchlosť:
    - môže vyletieť z krabice
    - môže preletieť skrz inú guličku

    Pokúste sa tieto problémy vo vlastnom záujme vyriešiť.
    Možno na ne natrafíte pri nasledujúcej rozcvičke.

    Na zamyslenie - ako by bolo treba modifikovať riešenie v prípade,
    že by mala každá gulička rôznu veľkosť ?
    Pre inšpiráciu odporúčam pozrieť si prednášku Vlákna a konkuretné procesy:
    - slajd 22 - interakcia guličiek s krabicou
    - slajd 24 - interakcia guličiek navzájom
    - slajdy 23 a 25 - applet a vykresľovanie
    Akékoľvek nejasnosti so zadaním adresujte na juraj.starinsky(at)gmail.com
    Netreba sa báť, treba si to vyskúšať, hlavne začnite včas, aby ste kvôli problémom, na ktoré narazíte, nezmeškali odovzdávanie.


    [Odovzdať riešenie úlohy]


    Úloha pre skupinu 4, cvičenie 10:

    Riešenie rozcvičky 10 + celé zadanie

    V úlohe z cvičenia 8 - spracovanie textových súborov, mali nedostatky a neodstránili ich títo študenti:

    Myšík Ján

    Ak sa teda dotyční chcú vyhnúť postihu za spomenutú úlohu, odporúčam poriadne si skontrolovať odovzdané riešenie a patrične ho doplniť aj s komentárom, kde bola chyba, ako sa prejavovala a ako ju správne odstrániť.
    Kto sa neozve do konca piatka, 5.12. bude považovaný za záujemcu o postih.
    Kontakt na mňa juraj.starinsky(at)gmail.com

    Úloha o guličkách - nedostatky:
    Náhodný smer a náhodná rýchlosť neznamená, že všetky guličky chodia len presne šikmo, vodorovne alebo zvysle (prípadne stoja na mieste), rovnakou rychlosťou ! (
    Náhodný smer pohybu sme mali na cviku - príklad opitý námorník
    Test odrazov typu gulička 'i' s guličkou 'j' a gulička 'j' s guličkou 'i' :
    - čo ak 'i'=='j' ?
    - čo ak gulička 'i' obracia svoj smer aj smer guličky 'j' a naopak ? Aké budú výsledné smery po spracovaní všetkých nárazov ?

    Skontrolujte si svoju úlohu, či tam nemáte nejaké nedostatky a skúste aj s tým niečo urobiť.
    Ak sa však bude počet nedorobených úloh množiť, postihy budú okamžité, nezvratné a bez milosti ! :-)

    Zadanie úlohy:
    Naprogramujte applet, v ktorom je možné zadať dátum narodenia a určí vám znamenie zverokruhu.
    V applete zobrazte obrázok vášho znamenia graficky, obrázky si vyhľadajte sami.
    Alternatívnym horoskopom sa medze nekladú.


    [Odovzdať riešenie úlohy]