1iai2 zima12

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

cvičenia pre 1iai2



aktuálna nepovinná domáca úloha

11. ndú z 27.11.2012


  • predpokladáme, že už je definovaná trieda TMojRobot, ktorá vie nakresliť binárny strom úrovne NN a veľkosti DD (tieto dve hodnoty sa inicializujú v konštruktore: náhodné NN z intervalu <3, 7>, DD z intervalu <30, 60>):
type
  TMojRobot = class(TRobot)
    NN, DD: Integer;
    constructor Create(XX, YY: Integer);
    procedure Strom(N: Integer; D: Real);
    procedure Kresli;
  end;
  • okrem toho máme dynamické pole robotov: do ktorého sa budú ukladať vytvorené roboty
var
  R: array of TRobot;
  • treba naprogramovať Image1MouseDown, Image1MouseMove, Image1MouseUp:
    • pri kliknutí do plochy (Image1MouseDown), buď vznikne nový robot (pridá sa do poľa R), alebo sa naštartuje ťahanie už existujúceho robota (ak sa kliklo blízko niektorého)
    • ak sa naštartovalo ťahanie, v Image1MouseMove sa ťahanému robotu zmení (X, Y), zmaže sa plocha a všetky sa znovu nakreslia (metóda Kresli)
    • v Image1MouseUpsa zruší príznak, že niektorý robot je ťahaný


bodovanie

1 d1 2 d2 3 d3 4 d4 5 d5 6 d6 7 d7 8 d8 9 d9 10 d10 11 d11
Baláži Tomáš 4 1 5 1 1 2 0.5 1 1 4 4 25
Belica Martin 4 1 5 1 5 1 4 0.5 5 1 5 1 4.5 1 2 1 4.5 1 4 40
Bucha Samuel 4 1 5 1 3 0 2 1 5 1 4 1 1 3 2 4 37
Cisárik Michal 5 1 6 1 2 0 1 4.5 20
Dobiáš Dominik 4 1 5 1 5 1 2 0.5 3 1 1 3 0.5 4 1 4.5 3 2 4 40
Floch Peter 5 1 5 1 3.5 0 2 4 22
Hanzlík Roman 5 1 5 0 4 0 5 0.5 5 2 4.5 5 4 1 39
Hervay Ákos 4 5 0.5 0.5 5 0.5 0 1 1 4 0.5 4 0.5 4 31
Ivan Róbert 4 5 1 3 2 4 4 4.5 3 2 3 32
Jankovič Erik 5 1 5 1 4 0.5 2 0 2 0.5 4 4.5 1 3 2 1 35
Knechta Dominik 5 1 4 1 4.5 1 0.5 3 1 1 1 2 3.5 4 2 32
Kováč Matúš 5 1 4 1 5 4 2 2 3 1 2 29
Kúdora Dávid 5 1 5 1 0.5 5 0.5 0 1 4.5 24
Kužel Marek 5 1 5 1 4.5 0 1 4.5 22
Martinka Marek 5 1 5 1 3 1 0 1 2 1 2.5 2 1 25
Polakovič Luboš 5 1 5 1 3 0 5 4 3 4 31
Potisk Martin - 1 5 3 1 0.5 0 2 3.5 0.5 4 4.5 25
Prékop Tomáš 4 1 5 1 2 1 1 0 1.5 1 1 0.5 4 1 4 28
Sedláček Jakub 5 1 5 1 5 1 5 1 5 1 5 1 5 1 4 1 4.5 4 40
Sedláček Peter 5 1 5 1 5 1 5 1 4 1 5 1 5 0.5 5 1 4 1 5 40
Siraň Radovan 5 5 1 3 1 1 0.5 0 0.5 2 1 1 0.5 3 0.5 4.5 3.5 0.5 3 35
Sklenčár Viktor 4 1 5 1 4.5 1 5 1 5 1 5 1 5 1 3 1 5 1 3.5 3 40
Sopko Martin 4 1 - 3 1 1 3 4 2.5 4 1 25
Šifra Matej 5 1 5 1 2.5 1 1 1 1 0.5 3 1 0 2 25
Šiškovič Joachim 5 1 5 1 5 1 1 4 1 3 1 0.5 1 3 0.5 4.5 3.5 3.5 40
Šuník Martin 4 1 5 1 5 1 5 1 1 1 1 5 1 5 1 5 4.5 5 40
Tóthová Gabriela 5 1 - 1 4 1 5 0.5 1 0 2 1 1 5 1 2.5 1 2 34


predchádzajúce nepovinné domáce úlohy

1. ndú z 18.9.2012


  • pomocou MoveTo a LineTo nakresliť štvorcovú špirálu zloženú z N čiar
  • môžete predpokladať, že N je deliteľné 4
  • nepoužívajte príkaz if


2. ndú z 25.9.2012


  • program vygeneruje napr. 10000 bodiek na náhodné pozície
  • bodky zafarbí tak, aby v strede plochy vznikol modrý kríž a zvyšok plochy bol červený
  • program pred samotným bodkovaním nakreslí obrys kríža (pomocou čiar) a až potom spustí bodkovanie


3. ndú z 2.10.2012


  • hviezdičkovanie plochy NxN v konzolovom režime (kde dá funkcia True vypísať '*' inak '.')
  • urobiť logickú funkciu, ktorá bude dávať True pre políčka v štvorcovej sieti, pre ktoré:
    • sú na obvode
    • sú na nejakej uhlopriečke
    • sú v hornej alebo spodnej štvrťke, ktoré sú tvorené uhlopriečkami


4. ndú z 9.10.2012


  • zistiť počet slov v nejakom dlhom textovom súbore
    • slová = postupnosti len písmen
    • oddeľovače sú všetky ostatné znaky


5. ndú z 16.10.2012


  • na kliknutie sa prečíta bitmapa do globálnej premennej, zapamätá sa X, Y a naštartuje časovač
  • Timer: zmaže plochu, vykreslí všetky bitmapy na ich príslušné (X, Y) a posunie X o 10, ak bitmapa vypadne z plochy, uvolní bitmapu
  • každé kliknutie vyrobí novú bitmapu (aj s jej X, Y) a potom tieto bitmapy utekajú paralelne
    • každá sa na okraji zruší
    • hint: použiť globálne polia bitmáp a momentálnych súradníc X, Y


6. ndú z 23.10.2012


  • pomocou Pixels[X, Y] otočit bitmapu (napr. rozmeru 256x256) o ľubovoľný zadaný uhol


7. ndú z 30.10.2012


  • vygenerovať vedľa seba husto veľa robotov otočených smerom nahor
  • potom sa naraz všetky rozbehnú malým krokom nahor (pomocou Timer)
  • postupne niektoré z nich zastanú tak, že vytvoria sínusovku


8. ndú z 6.11.2012


  • krátenie zlomkov


9. ndú z 13.11.2012


  • pomocou dynamických polí budeme reprezentovať množiny tak, že v týchto poliach budú všetky prvky zoradené vzostupne a žiaden sa nevyskytne viackrát; naprogramujte dve funkcie, ktoré vyrobia prienik a zjednotenie takýchto množín:
type
  TPole = array of Integer;
 
function Prienik(A, B: array of Integer): TPole;
function Zjednotenie(A, B: array of Integer): TPole;
  • napr. by malo fungovať
Prienik([100, 200, 300], [200, 300, 400])   -->   vyrobí množinu {200, 300}
Zjednotenie([100, 200, 300], [200, 300, 400])   -->   vyrobí množinu {100, 200, 300, 400}


10. ndú z 20.11.2012 - 2 úlohy


  • pomocou zásobníka znakov a jednej premennej program zistí, či vstupný reťazec obsahuje rovnaký počet 'a' a 'b' - program vypíše 'ano' alebo 'nie':
type
  TStack = class
    Pole: string;
    procedure Push(P: Char);
    function Pop: Char;
    function Top: Char;
    function Empty: Boolean;
  end;
 
var
  S: TStack;
  Z: Char;
  • napr. pre vstup
aabbbbabaa   -->   vypíše ano
abcab   -->   vypíše nie


  • navrhnúť Turingov stroj, ktorý pre vstup zložený z (N+1) jednotiek vyrobí číslo N v dvojkovej sústave, napr.
111111111111   -->   akceptuje a vyrobí   1011
1110   -->   neakceptuje




Aktualizované: 28.11.2012