Witam. Mam problem z wyświetleniem wszystkich podzbiorów. Chciałbym poprosić o pomoc w rozwiązaniu tego problemu.
#include <stdio.h>
#include <stdlib.h>
int sprawdz_czy_da_sie_zwiekszyc_male(int* tablica, int ile_elementow){
int index;
//sprawdz indexy od 0 do k
for(index=0;index<ile_elementow;index++){
if(tablica[index]+1<tablica[index+1]){
return 1;
}
}
return 0;
}
void wypisz(int* tablica, int ile_elementow){
int w = 0;
for(;w<ile_elementow;w++){
printf("%d", tablica[w]);
}
printf("\n");
}
void zwieksz_zaczynajac_od_pierwszego_elementu(int* tablica, int k_elementow){
int index;
for(index=0;index<k_elementow;index++){
if(tablica[index]+1<tablica[index+1]){
tablica[index]++;
wypisz(tablica,k_elementow);
}
}
}
void zmniejsz_male(int* tablica, int ile_elementow){
int index;
int wartosc=1;
for(index=0;index<ile_elementow;++index){
tablica[index]=wartosc;
wartosc++;
}
}
void podzbiory(int n, int k_elementow,int tab[])
{
if(sprawdz_czy_da_sie_zwiekszyc_male(tab, k_elementow)){
zwieksz_zaczynajac_od_pierwszego_elementu(tab, k_elementow);
}else{
if(tab[k_elementow-1]!=n){
tab[k_elementow-1]++;
wypisz(tab, k_elementow);
zmniejsz_male(tab, k_elementow-1);
}else{
printf("Ostatni element ma wartosc n.\n");
if(!sprawdz_czy_da_sie_zwiekszyc_male(tab, k_elementow)){
return;
}
}
}
podzbiory(n,k_elementow, tab);
}
int main(void)
{
int i=0,n,k;
printf("Podaj n\n");
scanf("%d", &n);
printf("Podaj k\n");
scanf("%d", &k);
int tab[n];
for(i=0;i<n;i++)
{
tab[i]=i+1;
}
wypisz(tab, k);
podzbiory(n,k,tab);
}