26.Prednaska/Cvicenie0

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

26. Cvičenie


< 26.Prednáška | riešené úlohy


Rozcvička

1. kopírovať binárny súbor integer.dat do real.dat

  • kde vstupný súbor obsahuje postupnosť celých čísel a výstupný súbor bude obsahovať tie isté čísla ale prekonvertované na reálne
  • nepoužívajte polia ani reťazce


2. kopírovať binárny súbor real.dat do integer.dat

  • kde vstupný súbor obsahuje postupnosť reálných čísel a výstupný súbor bude obsahovať tie isté čísla ale prekonvertované (Round) na celé
  • nepoužívajte polia ani reťazce


Cvičenie

spájané zoznamy

  • vyrábanie zoznamov podľa rôznych podmienok
  • zadeklarujte zoznam celých čísel
  • len priradeniami a volaním New vyrobte 3-prvkový zoznam s číslami 1, 2, 3 - skúsiť rôzne usporiadania, napr.
1 -> 2 -> 3 -> 
2 -> 3 -> 1 -> 
3 -> 2 -> 1 -> 
...
  • vypísať prvky zoznamu
  • čítať textový súbor s celými číslami a vyrábať z nich zoznam (v správnom poradí)
  • rôzne funkcie typu:
  • zistí, či má zoznam aspoň 1 prvok
  • zistí, či má zoznam aspoň 2 prvky
  • minimálna hodnota
  • smerník na minimálnu hodnotu
  • priemer
  • počet nulových prvkov
  • vráti smerník na I-ty vrchol (ak neexistuje, vráti nil)
  • vráti index vrcholu pre prvý výskyt (ak nenájde, tak 0)
  • smerník na stredný vrchol
  • zistiť, či sa v zozname nejaké číslo neopakuje
  • vkladanie a vyhadzovanie prvkov
  • vlož za, vlož pred
  • vyhoď vrchol s hodnotou
  • vyhoď i-ty vrchol
  • za každý vrchol vložiť nový vrchol s nulovou hodnotou
  • medzi každé dva vrcholy vložiť nový vrchol s ich súčtom (na začiatku napr. 1 -> 1 ->)
  • procedúra VyhodNulove vyhodí zo zoznamu všetky vrcholy s nulovou hodnotou
  • funkcia vymení poradie dvoch nasledovníkov parametra P: PVrchol, t.j. P^.Next a P^.Next^.Next
  • vlož zadanú hodnotu na náhodne miesto v zozname (aj pred prvý, aj za posledný)


Domáca úloha

1. napíšte podprogram Otoc, ktorý otočí poradie prvkov zadaného zoznamu

procedure Otoc(var Z: PVrchol);
  • pritom sa nemajú vytvárať nové ani rušiť pôvodné vrcholy, len sa presmerníkujú


2. napíšte podprogram Vymen, ktorý rozsekne zoznam v strede na dva zoznamy a tie potom zlepí, ale najprv druhý a potom prvý

procedure Vymen(var Z: PVrchol);
  • pritom sa nemajú vytvárať nové ani rušiť pôvodné vrcholy, len sa presmerníkujú
  • napr. pre zoznam
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 
po výmene dostávame zoznam
4 -> 5 -> 6 -> 1 -> 2 -> 3 -> 


3. procedúra VyhodDuplikaty vyhodí zo zoznamu všetky ďalšie výskyty tej iste hodnoty