sam sobie odpowiedziałeś:
#include <stdio.h>
int main(int argc, char **argv)
{
//jak potrzebujesz wiecej elementow, zmien typ na unsigned long long int
#define TYP unsigned int
#define TYP_ILE unsigned char
TYP zbior_pelny ; //zmienna reprezentujaca zbior pelny
TYP_ILE ilosc_elementow ; //ile elementow moze zawierac ten zbior
//iteratory
TYP i ;
TYP_ILE j ;
//wypelnienie jedynkami:
zbior_pelny = 0xFFFFFFFF ;
//zbior pelny = 11111111111111111111111111111111 ;
printf("ilosc elementow = ") ;
scanf("%u",&ilosc_elementow) ;
//zalozmy, ze podalismy 5
//usuniecie niepotrzebnych jedynek
if (ilosc_elementow==0)
zbior_pelny=0 ;
else
zbior_pelny>>=(32-ilosc_elementow) ;
//zbior pelny = 00000000000000000000000000011111 ; - jak widac, zbior pelny 5 elementow
//iteracja od zbioru pustego do pelnego uwzgledniajace wszystkie wariacje z powtorzeniami
for (i=0; i<=zbior_pelny; ++i)
//teraz trzeba wypisac te elementy
{
printf("Podzbior nr. %u zawiera elementy: {",(i+1)) ;
for (j=0; j<ilosc_elementow; ++j)
//sprawdzanie kazdego bitu - czyli obecnosci kazdego elementu w zbiorze
if (i&(1<<j))
{
printf("element_%u",(j+1)) ;
if (j!=ilosc_elementow-1)
printf(", ") ;
}
printf("}\n") ;
}
return 0;
}
ilosc elementow = 5
Podzbior nr. 1 zawiera elementy: {}
Podzbior nr. 2 zawiera elementy: {element_1, }
Podzbior nr. 3 zawiera elementy: {element_2, }
Podzbior nr. 4 zawiera elementy: {element_1, element_2, }
Podzbior nr. 5 zawiera elementy: {element_3, }
Podzbior nr. 6 zawiera elementy: {element_1, element_3, }
Podzbior nr. 7 zawiera elementy: {element_2, element_3, }
Podzbior nr. 8 zawiera elementy: {element_1, element_2, element_3, }
Podzbior nr. 9 zawiera elementy: {element_4, }
Podzbior nr. 10 zawiera elementy: {element_1, element_4, }
Podzbior nr. 11 zawiera elementy: {element_2, element_4, }
Podzbior nr. 12 zawiera elementy: {element_1, element_2, element_4, }
Podzbior nr. 13 zawiera elementy: {element_3, element_4, }
Podzbior nr. 14 zawiera elementy: {element_1, element_3, element_4, }
Podzbior nr. 15 zawiera elementy: {element_2, element_3, element_4, }
Podzbior nr. 16 zawiera elementy: {element_1, element_2, element_3, element_4, }
Podzbior nr. 17 zawiera elementy: {element_5}
Podzbior nr. 18 zawiera elementy: {element_1, element_5}
Podzbior nr. 19 zawiera elementy: {element_2, element_5}
Podzbior nr. 20 zawiera elementy: {element_1, element_2, element_5}
Podzbior nr. 21 zawiera elementy: {element_3, element_5}
Podzbior nr. 22 zawiera elementy: {element_1, element_3, element_5}
Podzbior nr. 23 zawiera elementy: {element_2, element_3, element_5}
Podzbior nr. 24 zawiera elementy: {element_1, element_2, element_3, element_5}
Podzbior nr. 25 zawiera elementy: {element_4, element_5}
Podzbior nr. 26 zawiera elementy: {element_1, element_4, element_5}
Podzbior nr. 27 zawiera elementy: {element_2, element_4, element_5}
Podzbior nr. 28 zawiera elementy: {element_1, element_2, element_4, element_5}
Podzbior nr. 29 zawiera elementy: {element_3, element_4, element_5}
Podzbior nr. 30 zawiera elementy: {element_1, element_3, element_4, element_5}
Podzbior nr. 31 zawiera elementy: {element_2, element_3, element_4, element_5}
Podzbior nr. 32 zawiera elementy: {element_1, element_2, element_3, element_4, element_5}