štvrtok 30. októbra 2008

Zadanie na predmet DSA č.2

Implementácia množiny v C (SET) s použitím Malloc a Free z prvého zadania.

Text zadania:

Implementujte dátový typ set, ktorý predstavuje množinu hodnôt typu elm, kde elm pre naše potreby nech je alias na typ int (alebo unsigned int).

Implementujte preň' tieto operácie:

set_new
set_delete
set_add
set_remove
set_iter
set_filter

Jednotlivé operácie majú nasledujúci význam:

Operácia set_new vráti novú prázdnu množinu:

set set_new();

Operácia set_delete zruší (korektne odalokuje) množinu s celú tak ako je:

void set_delete(set s)

Operácia set_add pridá do množiny s prvok e. Ak tam uvedený prvok už je, tak táto operácia nemá mať žiadny efekt.

void set_add(set s, elm e);

Operácia set_remove zruší z množiny s prvok e. Ak sa tam uvedený prvok nenachádza, tak táto operácia nemá mať žiadny efekt.

void set_remove(set s, elm e);

Operácia set_iter aplikuje funkciu f na každý prvok množiny s.

void set_iter(set s, void (*f)(elm));

Operácia set_filter vráti novú množinu, ktorá bude pozostávať zo všetkých tých prvkov množiny s, pre ktoré funkcia f vráti nenulovú hodnotu.

set set_filter(set s, int (*f)(elm));

Správanie samotného programu

Napíšte interaktívny program, ktorý:

* zo štandardného vstupu číta dohodnuté príkazy
* zapisuje na štandardný výstup (to, čo treba)

Váš program nech interne udržuje množinu IP adries.

Mal by podporovať nasledujúce príkazy (zadané zo štandardného vstupu):

echo
add B.B.B.B
remove B.B.B.B
reset
select B.B.B.B/B

Jednotlivé príkazy majú nasledujúci význam:

Príkaz echo nijakým spôsobom nemení množinu IP adries. Len sa na štandardný výstup vypíše na samostatný riadok reťazec echo.

Príkaz add hovorí, že zadaná IP adresa B.B.B.B má byť pridaná do Vašej množiny.

To B reprezentuje akýkoľvek bajt.

Príkaz remove hovorí, že zadaná IP adresa má byť vyhodená z Vašej množiny.

Príkaz reset spôsobí vyhodenie všetkých IP adries z Vašej množiny.

Príkaz select hovorí, že máte vypísať všetky tie IP adresy, ktoré patria do zadanej siete určenou maskou B.B.B.B/B. Každá IP adresa má byť na samostatnom riadku.

Na štandardný výstup nevypisujte nadbytočné medzery, nadbytočné konce riadkov ani iné nevyžiadané veci.

Na koniec štandardného vstupu (EOF) má váš program zareagovať tak, že korektne skončí.

zdroj: http://altair.sk/mediawiki/index.php/DSA#Prv.C3.A9_zadanie
Vypracované zadanie zadanie.zip

Žiadne komentáre: