Generating subsets of a set in C(Non recursive) -


i trying generate subsets of set in non recursive manner. code:

#include <stdio.h>  main() {     int no_of_element, no_of_subset, i, j, start, index, a[50], x;     printf("enter size of main set :");     scanf("%d", &no_of_element);     printf("enter elements of main set :");     (x = 0; x < no_of_element; x++)         scanf("%d", &a[x]);     printf("the subsets :\n");      (no_of_subset = 1; no_of_subset <= no_of_element; no_of_subset++) {         (start = 0; start <= no_of_element - no_of_subset; start++) {             if (no_of_subset == 1)                 printf("%d\n", a[start]);             else {                 index = start + no_of_subset - 1;                 (j = index; j < no_of_element; j++) {                     (i = start; < index; i++) {                         printf("%d\t", a[i]);                     }                     printf("%d\n", a[j]);                 }             }         }     } } 

this output:

enter size of main set :4 enter elements of main set :1 2 3 4 subsets : 1 2 3 4 1      2 1      3 1      4 2      3 2      4 3      4 1      2      3 1      2      4 2      3      4 1      2      3      4 

this code isn't generating subset (1,3,4). please me fix ?

just fun, dit scratch. trick let counter go through possible subsets, each being combination of bits.

in case, use unsigned long int handle sets of 64 elements:

#include <stdio.h>  void print_subset(int subset, int *set) {     int pos=0;     printf("subset %d = ", subset);     while (subset) {         if (subset & 1) {             printf("%d ", set[pos]);         }         subset >>= 1;         pos++;     }     printf("\n"); }  int main() {  int no_of_element,no_of_subset,x,a[50];   printf("enter size of main set :");      scanf("%d",&no_of_element);  printf("enter elements of main set :");  for(x=0;x<no_of_element;x++)      scanf("%d",&a[x]);   no_of_subset= (1 << no_of_element);  printf("there %d subsets\n", no_of_subset);   (; no_of_subset--;) {      print_subset(no_of_subset, a);  } } 

when run produces

enter size of main set :4 enter elements of main set :1 2 3 4 there 16 subsets subset 15 = 1 2 3 4  subset 14 = 2 3 4  subset 13 = 1 3 4  subset 12 = 3 4  subset 11 = 1 2 4  subset 10 = 2 4  subset 9 = 1 4  subset 8 = 4  subset 7 = 1 2 3  subset 6 = 2 3  subset 5 = 1 3  subset 4 = 3  subset 3 = 1 2  subset 2 = 2  subset 1 = 1  subset 0 =  

Comments