Množina s libovolnou kardinalitou – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

 Množina s libovolnou kardinalitou – Pascal – Fórum – Programujte.com Množina s libovolnou kardinalitou – Pascal – Fórum – Programujte.com

 

24. 10. 2007   #1
-
0
-

Ahojte, nevite prosim nekdo, jak se poprat s timto ukolem. Ja bych ho dokazala vyresit, ale jinak nez nam byla stanovena kriteria.

Podstata problému: Protože Pascal umožňuje zpracovávat množiny s omezenou kardinalitou (např. u typu set of BYTE je to max. 256 prvků), je vaším úkolem toto omezení obejít pomocí definice abstraktního datového typu "tSet", který budete v Pascalu implementovat jako pole několika množin "set of byte". V jazyce C, kde typ množina není obsažen vůbec, budete používat pole prvků typu unsigned char.

K práci s datovým typem tSet nadefinujte a implementujte následující metody:

procedure CreateSet(var M: tSet); - vytvoří novou množinu M s kardinalitou K prvků, kde K je konstanta
procedure ClearSet (var M : tSet); - z M se stane prázdná množina
procedure AddSet (var M : tSet; n : integer); - Přidá do množiny M prvek n. Pokud dojde k chybě (prvek nemůže být součástí množiny), nedělá procedura nic.
procedure DelSet (var M : tSet; n : integer); - ubere z množiny M prvek n. Pokud dojde k chybě (prvek nemůže být součástí množiny), nedělá procedura nic.
function InSet (M : tSet; n : integer) : boolean; - vrátí True, pokud se prvek n v množině M nachází. Vrátí False, pokud se prvek n v množině M nenachází nebo pokud prvek být v množině nemůže.
procedure DiffSet (var M1 : tSet; M2 : tSet); - rozdíl množin M1 a M2 (tj. výsledek obsahuje prvky množiny M1, které se nenacházejí v M2). Výsledek se vrací v M1.
function EquSet (M1 : tSet; M2 : tSet) : boolean; - Test množin M1 a M2 na rovnost.
procedure UnionSet (var M1 : tSet; M2 : tSet); - provede sjednocení množin M1 a M2, výsledek uloží do M1
procedure IntersectSet (var M1 : tSet; M2 : tSet); - provede průnik množin M1 a M2, výsledek uloží do M1

Nahlásit jako SPAM
IP: 213.192.4.–
Mircosoft+1
Věrný člen
24. 10. 2007   #2
-
0
-

Buhehe... přesně na tohle zadání se mě ptali tři lidi tři roky po sobě, přibližně ve stejnou dobu. Jsi čtvrtá. Ten učitel vážně nemá fantazii :-).

V zadání je chyba. Z definice množiny (množina je soubor prvků, z nichž každý je v ní obsažen maximálně jednou) vyplývá, že jestli se do ní má vkládat typ byte (což je v zadání požadováno - "set of byte"), tak se jich tam může nacpat stejně jenom 256, pak už by to nebyla množina (protože byte nabývá jenom 256 různých hodnot). Kdyby se tam měly vkládat integery, tak se to zase nedá složit z několika množin "set of...", protože integer do setu nenacpeš.

Podle toho zadání jsem zbastlil takové poměrně kostrbaté řešení založené na dynamických polích, do kterých se vkládají přímo čísla: http://mircosoft.ic.cz/download/mnoziny.pas.

Kdybys chtěla něco prakticky použitelného, tak v téhle jednotce http://mircosoft.ic.cz/download/NFSUP.PAS jsem to vyřešil bitovými poli (což je technika, kterou používají i standardní množiny) a trochou Assembleru.

Vyřiďte už někdo konečně autorovi toho zadání, že si má vymyslet něco nového, že už mě to nebaví :smile20:

Nahlásit jako SPAM
IP: 89.176.249.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Množina — založil ukulele

Juliova množina z JS — založil Matěj Andrle

Množina relacie — založil Nika

Množina bez násobků — založil Sak

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý