26.Prednaska/Cvicenie0: Rozdiel medzi revíziami

Z Pascal
Prejsť na: navigácia, hľadanie
Riadok 25: Riadok 25:
 
spájané zoznamy
 
spájané zoznamy
 
* vyrábanie zoznamov podľa rôznych podmienok
 
* 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.
 +
{{Prog}}
 +
1 -> 2 -> 3 ->
 +
2 -> 3 -> 1 ->
 +
3 -> 2 -> 1 ->
 +
...
 +
|}
 +
:* čítať textový súbor s celými číslami a vyrábať z nich zoznam (v správnom poradí)
 
* vkladanie a vyhadzovanie prvkov
 
* vkladanie a vyhadzovanie prvkov
 
* rôzne funkcie typu:
 
* rôzne funkcie typu:
:* minimum
+
:* zistí, či má zoznam aspoň 1 prvok
 +
:* zistí, či má zoznam aspoň 2 prvky
 +
:* minimálna hodnota
 +
::* smerník na minimálnu hodnotu
 
:* priemer
 
:* priemer
 
:* počet nulových prvkov
 
:* počet nulových prvkov
 
:* smerník na stredný vrchol
 
:* smerník na stredný vrchol
 
+
:* zistiť, či sa v zozname nejaké číslo neopakuje
 +
* funkcia vymení poradie dvoch nasledovníkov parametra '''P: PVrchol''', t.j. '''P^.Next''' a '''P^.Next^.Next'''
 +
* procedúra '''VyhodNulove''' vyhodí zo zoznamu všetky vrcholy s nulovou hodnotou
  
 
=== Domáca úloha ===
 
=== Domáca úloha ===
  
  
1. napíšte program, ktorý ...
+
1. napíšte podprogram '''Otoc''', ktorý otočí poradie prvkov zadaného zoznamu
 +
{{Prog}}
 +
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ý
 +
{{Prog}}
 +
procedure Vymen(var Z: PVrchol);
 +
|}
 +
* pritom sa nemajú vytvárať nové ani rušiť pôvodné vrcholy, len sa presmerníkujú
 +
* napr. pre zoznam
 +
{{Prog}}
 +
1 -> 2 -> 3 -> 4 -> 5 -> 6 ->
 +
|}
 +
: po výmene dostávame zoznam
 +
{{Prog}}
 +
4 -> 5 -> 6 -> 1 -> 2 -> 3 ->
 +
|}

Verzia zo dňa a času 10:21, 21. február 2013

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 -> 
...
  • čítať textový súbor s celými číslami a vyrábať z nich zoznam (v správnom poradí)
  • vkladanie a vyhadzovanie prvkov
  • 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
  • smerník na stredný vrchol
  • zistiť, či sa v zozname nejaké číslo neopakuje
  • funkcia vymení poradie dvoch nasledovníkov parametra P: PVrchol, t.j. P^.Next a P^.Next^.Next
  • procedúra VyhodNulove vyhodí zo zoznamu všetky vrcholy s nulovou hodnotou

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 ->