Programación General > C/C++
Conjunto Potencia
lidenbrock:
Si, he estado trabajando :comp: en la otra parte del algoritmo, pues es un algoritmo de reconocimiento de objeots nuevos, con base en clases dadas.
Ya tengo toda la parte de captura de datos, y la resolución de la mayor parte del problema, lo que pasa es que no puedo programar la parte del conjunto potencia.
Por ejemplo, le doy que son cinco elementos en el vector, es decir de X1 hasta X5; entonces el número de conjuntos de apoyo será 3, lo que significa que solo los subconjuntos formados por dos elementos, 3 elementos y cuatro elementos se deberán utilizar. :lightsabre:
Por medio de unos ciclos for voy comparando si es un número distinto del primer número es decir, para k=3: X1X2X3, X1X2X4, pero en la siguiente iteración me da como resultado X3X2X1, y ese valor ya estárepetido en la primera. Para finalizar, debo puntualizar que si obtengo el conjunto potencia es de manera errónea, es decir, con valores X3X2X1, que ya se repite, y valores que faltan. :smartass:
Noel Solw:
Adjunto un programa reecursivo para encontrar las combinaciones de un conjunto de elementos : 1,2,3,....,n.
Espero que consigas adaptarlo a tus necesidades.
Exito ! ! !
lidenbrock:
Gracias Noel, afortunadamente, ya :comp: pude resolver el problema, pero me servirá mucho tu ayuda.
Hasta luego, espero que en un futuro cercano, pueda aportar algo a los de esta página. :alien:
luismgl.86:
Buenas noches. Tengo una duda en relación al código fuente que facilita un amigo anteriormente. El codigo fuente es el siguiente: #include<iostream>
#include <stdlib.h>
int potencia(int b,int e){
int i;
int pot=1;
for(i=1;i<=e;i++){
pot=pot*b;
}
return pot;
}
int main(){
int i,j,limite;
std::string A[100];
std::cout<<"Ingrese el numero de elementos del conjunto"<<"\n";
std::cin>>limite;
for(i=0;i<limite;i++){
std::cout<<"Ingrese el elemento: "<<i+1<<" ";
std::cin>>A;
}
for(i=0;i<potencia(2,limite);i++){
for(j=0;j<limite;j++){
if(i & (1<<j))
std::cout<<A[j];
}
std::cout<<"\n";
}
system("pause");
return 0;
}
Mi duda, o mas bien pregunta, es que significa la instrucción if(i & (1<<j)). Gracias por la ayuda.
Navegación
[*] Página Anterior
Ir a la versión completa