-   
- #include "stdio.h" 
- #include "math.h" 
- #include "stdlib.h" 
- #include "conio.h" 
- #include <vector> 
-   
- #define NOTOKENS 6 
-   
- int contarUnos(int conjunto[]); 
- unsigned long conversor(unsigned long n1,int base1,int base2); 
- void binarioCharInt(char *binarioA, int *binario2,int unos); 
- void imprimirBinarioInt(int *binarioI); 
- void generarPotencia(int conjunto[],int unos); 
- void inicializarPotencia(int conjunto[][NOTOKENS], int numeroConjuntos, int unos); 
- void IntToBin(int valor, int digitos, char *binario); 
- void crearConjuntoAux(int conjunto[], int conjuntoAux[], int unos); 
- void cambiarNumeros(int conjunto[], int conjuntoP[][NOTOKENS], int conjuntoPAux[][NOTOKENS], int numeroConjuntos, int unos); 
- void inicializarZeroes(int conjunto[][NOTOKENS], int numeroConjuntos); 
- void cambiarFinal(int conjuntoPAux[][NOTOKENS], int conjuntoFinal[][NOTOKENS], int numeroConjuntos, int unos); 
- void imprimirConjuntoInicial(int conjunto[]); 
-   
- int main (void){ 
-     int conjunto[NOTOKENS]={0,1,1,1,1,0}; 
-     int unos = contarUnos(conjunto); 
-     int conjuntoAux[unos]; 
-     imprimirConjuntoInicial(conjunto); 
-     crearConjuntoAux(conjunto,conjuntoAux,unos); 
-     generarPotencia(conjuntoAux,unos); 
-     return 0; 
- } 
-   
- void imprimirConjuntoInicial(int conjunto[]){ 
-     printf("Conjunto Inicial = "); 
-     for(int i = 0;i<NOTOKENS;i++){ 
-     } 
- } 
-   
- void crearConjuntoAux(int conjunto[], int conjuntoAux[], int unos){ 
-     int j=0; 
-     for(int i = 0;i<NOTOKENS;i++){ 
-         if(conjunto[i]==1){ 
-             conjuntoAux[j]=i+1; 
-             printf("%d, ",- conjuntoAux [- j ]);
 
-             j++; 
-         } 
-     } 
- } 
-   
- void generarPotencia(int conjunto[],int unos){ 
-     int-  numeroConjuntos  = (int)pow(2,- unos );
 
-     int conjuntoPotenciaAux[numeroConjuntos][NOTOKENS]; 
-     int conjuntoPotencia[numeroConjuntos][NOTOKENS]; 
-     int conjuntoPotenciaFinal[numeroConjuntos][NOTOKENS]; 
-     inicializarZeroes(conjuntoPotencia,numeroConjuntos); 
-     inicializarZeroes(conjuntoPotenciaAux,numeroConjuntos); 
-     inicializarPotencia(conjuntoPotencia,numeroConjuntos,unos); 
-     inicializarPotencia(conjuntoPotenciaAux,numeroConjuntos,unos); 
-     cambiarNumeros(conjunto,conjuntoPotencia,conjuntoPotenciaAux,numeroConjuntos,unos); 
-     inicializarZeroes(conjuntoPotenciaFinal,numeroConjuntos); 
-     cambiarFinal(conjuntoPotenciaAux,conjuntoPotenciaFinal,numeroConjuntos,unos); 
- } 
-   
- void inicializarPotencia(int conjunto[][NOTOKENS], int numeroConjuntos, int unos){ 
-     unsigned long binario; 
-     unsigned long decimal; 
-     char binarioA[unos]; 
-     int binario2[unos]; 
-     binarioA[unos]=' '; 
-     for(int i = 0;i<numeroConjuntos;i++){ 
-         binario=conversor(i,2,10); 
-         IntToBin(i,unos,binarioA); 
-         binarioCharInt(binarioA,binario2,unos); 
-         for(int j = 0;j<unos;j++){ 
-             conjunto[i][j]=binario2[j]; 
-         } 
-     } 
- } 
-   
- void cambiarNumeros(int conjunto[], int conjuntoP[][NOTOKENS], int conjuntoPAux[][NOTOKENS], int numeroConjuntos, int unos){ 
-     printf("nConjunto Potencia Auxnn"); 
-     for (int i=0;i<numeroConjuntos;i++){ 
-         for(int j=0;j<unos;j++){ 
-             if(conjuntoP[i][j]==1){ 
-                     conjuntoPAux[i][j]=conjunto[j]; 
-                     printf("%d ",- conjuntoPAux [- i ][- j ]);
 
-             } 
-         } 
-     } 
- } 
-   
- void inicializarZeroes(int conjunto[][NOTOKENS], int numeroConjuntos){ 
-     for(int i = 0;i<numeroConjuntos; i++){ 
-         for(int j=0;j<NOTOKENS;j++){ 
-             conjunto[i][j]=0; 
-         } 
-     } 
- } 
-   
- void cambiarFinal(int conjuntoPAux[][NOTOKENS], int conjuntoFinal[][NOTOKENS], int numeroConjuntos, int unos){ 
-     printf("nConjunto Potenciann"); 
-     int cambio=0; 
-     for(int i = 0;i<numeroConjuntos;i++){ 
-         for(int j = 0;j<NOTOKENS;j++){ 
-             cambio=conjuntoPAux[i][j]; 
-             if(cambio!=0)conjuntoFinal[i][cambio-1]=1; 
-         } 
-     } 
-     for(int i = 0;i<numeroConjuntos;i++){ 
-         for(int j = 0;j<NOTOKENS;j++){ 
-             printf("%d",- conjuntoFinal [- i ][- j ]);
 
-         } 
-     } 
- } 
-   
- int contarUnos(int conjunto[]){ 
-     int cont=0; 
-     for(int i =0;i<NOTOKENS;++i){ 
-         if(conjunto[i]==1)cont++; 
-     } 
-     return cont; 
-   
- } 
-   
- void binarioCharInt(char *binarioA, int *binario2,int unos){ 
-     for(int i = 0;i<unos;i++){ 
-         if(binarioA[i]=='0')binario2[i]=0; 
-         if(binarioA[i]=='1')binario2[i]=1; 
-     } 
- } 
-   
- unsigned long conversor(unsigned long n1,int base1,int base2){ 
-    unsigned long alg,mult=1,n2=0; 
-    while (n1 > 0){ 
-       alg = n1 % base1; 
-       n1 /= base1; 
-       n2 += (alg*mult); 
-       mult *= base2; 
-    } 
-    return n2; 
- } 
-   
- void imprimirBinarioInt(int *binarioI){ 
-     for(int i = 0;i<NOTOKENS;i++){ 
-     } 
- } 
-   
- void IntToBin(int valor, int digitos, char *binario){ 
-     for (int i = 0; i <= digitos; i++){ 
-         if (((1 << i) & valor) > 0) 
-             binario[digitos-1-i]= '1'; 
-         else 
-         binario[digitos-1-i]= '0'; 
-     } 
- } 
-   
-   
-   
-   
-   
-