Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 17. 12. 2009 12:34

SweetNelli
Příspěvky: 110
Reputace:   -1 
 

těžká úloha na ukazatele v Object Pascal

Mohli byste mi pomoci s touto úlohou?

1) Reprezentace množiny pomocí spojového seznamu

Pomocí spojových seznamů lze reprezentovat množiny čísel. Provádí se to zpravidla tak, že dané 
množině odpovídá spojový seznam obsahující všechny prvky množiny, který je vzestupně 
setříděný. Např. množině {4, 2, 0, 3, 9} odpovídá seznam 0, 2, 3, 4, 9. Protože seznam reprezentuje 
množinu, musí v něm být každý prvek zastoupený nejvýše jednou. Operace Prunik, Sjednoceni a 
Rozdil jsou nedestruktivní (tzn. že výsledkem je zcela nový seznam, nikoliv seznam tvořený uzly 
vstupních seznamů a vstupní seznamy zůstanou beze změny) a navíc při implementaci se NESMÍ 
použít žádné cykly (for, while, repeat until ani pomocí goto), tzn. že všechny operace je NUTNÉ 
řešit pomocí rekurze.

Doplňte těla následujících procedur:

procedure VlozPrvek(var zacatek : puzel; prvek : integer);
{ vloží prvek do množiny }

function ExistujePrvek(zacatek : puzel; prvek : integer) : boolean; 
{ vrátí true, pokud se prvek nachází v množině, jinak false }


procedure OdeberPrvek(var zacatek : puzel; prvek : integer);
{ odebere prvek z množiny }

function Sjednoceni(zacatek1, zacatek2 : puzel) : pTUzel;
{ vrátí ukazatel na první prvek seznamu, který reprezentuje 
   sjednocení množin reprezentovaných seznamem 1 a 2, seznamy 1 a 2 by 
   po operaci měly zůstat neporušené }

function Prunik(zacatek1, zacatek2 : puzel) : pTUzel;
{ vrátí ukazatel na první prvek seznamu, který reprezentuje průnik 
   množin reprezentovaných seznamem 1 a 2, seznamy 1 a 2 by po operaci 
   měly zůstat neporušené }

function Rozdil(zacatek1, zacatek2 : puzel) : pTUzel;
{ odečte od množiny reprezentované seznamem 1 množinu 
   reprezentovanou seznamem 2 a vrátí ukazatel na první prvek 
   výsledného seznamu, seznamy 1 a 2 by po operaci měly zůstat 
   neporušené }


procedure PrevedNaMnozinu(var zacatek : puzel);
{ převede obecný spojový seznam na množinu, tj. Že seznam setřídí podle 
velikosti a smaže prvky, které v něm jsou vícekrát }

Offline

 

#2 20. 12. 2009 20:07

xxsawer
Příspěvky: 196
Reputace:   
 

Re: těžká úloha na ukazatele v Object Pascal

↑ SweetNelli:
Tak resit ti to tady urcite nebudu, ale napovim ti jak bych to resil ja...
Seznam mas serazenej, tim lip...
Tak treba vkladani prvku...mas tam ukazatel na zacatek seznamu...
Takze kdyz je vkladany prvek mensi nez prvek na kterej si dostal ukazatel nebo je ukazatel null (nebo jak se tomu v pascalu rika) tak ho tam vlozis a konec, kdyz ne tak volas funkci znova s ukazatelem na dalsi prvek a smitec

Ostatni funkce by staly na stejnym postupu

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson