Tak pěkné dopoledne, pokud si chcete trochu zamyslet v jiném jazyce a s množinami..mohli byste mi poradit..jak to tu mám doplnit, aby to fungovalo, jak má? A jestli byste mohli i s výkladem, proč kde co. Něco mi jede a něco ne..a nějak mi to algoritmicky nemyslí, předem děkuju, jestli se někdo přemůže. :smile1:
//sablona
//Mno?ina s libovolnou mocností
#include <stdio.h>
#include <conio.h>
#define K 100
typedef unsigned char tSet[K/8+1]; //+1 pro pripad kdy K neni nasobkem osmi
//z M se stane prázdná mno?ina
void ClearSet(tSet M)
{
for(int i=0; i<K; i=i+1)
M[i/8] &= ~(1<<(i%8));
//nebo
//for(int i=0; i<(K/8+1); i=i+1)
// M[i] = 0; //vynuluju vsechny prvky pole
}
//vytvoøí novou mno?inu M s kardinalitou K prvkù, kde K je konstanta
void CreateSet(tSet M)
{
ClearSet(M);
for(int i=0; i<K; i=i+1) //pripravim K prvku
M[i/8] |= (1 << (i%8));
}
//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.
void AddSet (tSet M, int n)
{
if( n <= K )
M[n/8] |= (1 << (n%8));
}
//ubere z mno?iny M prvek n. Pokud dojde k chybì (prvek nemù?e být souèástí mno?iny), nedìlá procedura nic.
void DelSet(tSet M, int n)
{
//UKOL
}
//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.
bool InSet (tSet M, int n)
{
//UKOL
return false;
}
//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.
void DiffSet (tSet M1, tSet M2)
{
//UKOL
}
//Test mno?in M1 a M2 na rovnost.
bool EquSet (tSet M1, tSet M2)
{
//UKOL
return false;
}
//provede sjednocení mno?in M1 a M2, výsledek ulo?í do M1
void UnionSet (tSet M1, tSet M2)
{
//UKOL
}
//provede prùnik mno?in M1 a M2, výsledek ulo?í do M1
void IntersectSet (tSet M1, tSet M2)
{
//UKOL
}
//vypise prvky mnoziny
void PrintSet(tSet M)
{
for(int i=0; i<K; i=i+1)
{
if( M[i/8] & (1<<(i%8)) )
printf("\n%d", i);
}
}
int main()
{
tSet m1;
tSet m2;
CreateSet(m1);
CreateSet(m2);
ClearSet(m1); //nastavim mnozinu na 0
ClearSet(m2);
AddSet(m1, 4);
AddSet(m1, 72);
AddSet(m1, 9);
AddSet(m1, 17);
AddSet(m1, 72);
AddSet(m2, 1);
AddSet(m2, 21);
AddSet(m2, 4);
AddSet(m2, 17);
if( InSet(m1, 9) )
printf("\nCislo 9 je soucasti mnoziny.");
else
printf("\nCislo 9 neni soucasti mnoziny.");
DelSet(m1, 9);
if( InSet(m1, 9) )
printf("\nCislo 9 je soucasti mnoziny.");
else
printf("\nCislo 9 neni soucasti mnoziny.");
if( EquSet(m1, m2) )
printf("\nMnoziny se shoduji.");
else
printf("\nMnoziny jsou ruzne.");
IntersectSet(m1, m2);
printf("\nPrvky mnoziny M1");
PrintSet(m1);
UnionSet(m1, m2);
printf("\nPrvky mnoziny M1");
PrintSet(m1);
printf("\nLibovolnou klavesou ukoncete program.");
getch();
return 0;
}
Ještě jednou předem díky
Příspěvky odeslané z IP adresy 195.178.88.–
Mich