SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: lidenbrock en Jueves 10 de Junio de 2004, 19:46
-
Me gustaría que alguien me ayudara a obtener un conjunto potencia de un vector de diez elementos, y de ahí poder seleccionar los conjuntos de dos, tres y cuatro elementos.
-
Hola.
¿Qué es un conjunto potencia?
Un saludo.
Ruben3d
-
Es un conjunto de dos a la n elementos los que obtienes a partir de un conjunto dado, por ejemplo:
x=[a,b,c];
el conjunto potencia sería: {{0},{a},{b},{c},{ab},{ac},{bc},{abc}}
-
mmm.. :think: y que has hecho o que has avanzado en eso.. por que aqui no te lo van a desarrollar todo
Saludos ;)
-
Una observacion : el conjunto de potencia de un conjunto dado, es el conjunto de todos los conjuntos parciales. En este no debes incluir {0}, sino al conjunto vacio que se represemta por la letra phi (un cero cruzado por un palito diagonal).
Un sugerencia : para un conjunto de n elementos
[1] : escribe al conjunto vacio (este siempre esta en conjunto de potencias).
[2] : forma todas las conbinaciones posibles para n elementos:
C(1,n),C(2,n),.....,C(n,n);
[3] : tienes que obtener en total 2^n elementos.
exito ! ! !
-
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:
-
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 ! ! !
-
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:
-
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.