Programación General > C++ Builder

 Algoritmo Calcular Combinaciones

(1/1)

neg1414:
Buenas, Haber si me explico:

 
Tengo una serie de datos que he guardado de la forma siguiente


--- Código: Text ---    struct Datos{     short Dato1;     short Dato2;     short Dato3;     short Dato4;  }   Datos Coleccion[5]; ] 
 con ella debo de calcular todas la combianciones posibles entre sus datos
de la forma



--- Código: Text ---    short Combinaciones[NumCombinaciones][5]  //Subgeneris    Combinaciones[0].[0] =  Coleccion[0].Dato1;  Combinaciones[0].[1] =  Coleccion[1].Dato1;  Combinaciones[0].[2] =  Coleccion[2].Dato1;  Combinaciones[0].[3] =  Coleccion[3].Dato1;  Combinaciones[0].[4] =  Coleccion[4].Dato1;   Combinaciones[1].[0] =  Coleccion[0].Dato1;  Combinaciones[1].[1] =  Coleccion[1].Dato1;  Combinaciones[1].[2] =  Coleccion[2].Dato1;  Combinaciones[1].[3] =  Coleccion[3].Dato1;  Combinaciones[1].[4] =  Coleccion[4].[b]Dato2;[/b]                     Combinaciones[2].[0] =  Coleccion[0].Dato1;  Combinaciones[2].[1] =  Coleccion[1].Dato1;  Combinaciones[2].[2] =  Coleccion[2].Dato1;  Combinaciones[2].[3] =  Coleccion[3].Dato1;  Combinaciones[2].[4] =  Coleccion[4].[b]Dato3;[/b]                     Asi Sucesivamente hasta completar todas las  Combinaciones    Combinaciones[1024].[0] =  Coleccion[0].[b]Dato4;[/b]  Combinaciones[1024].[1] =  Coleccion[1].[b]Dato4;[/b]  Combinaciones[1024].[2] =  Coleccion[2].[b]Dato4;[/b]  Combinaciones[1024].[3] =  Coleccion[3].[b]Dato4;[/b]  Combinaciones[1024].[4] =  Coleccion[4].[b]Dato4;[/b]    


Para realizar estas operaciones solo se me ocurre mediante bucles Anidados (uno por cada coleccion en total 5) pero surge aqui un problema:

 No se APRIORI  cuantas colecciones tendran datos por lo cual  puede que no necesitare los 5 bucles anidados: Si solo hay tres colecciones la dimension Combinaciones es: Combinaciones[64][5] y solo necesitare 3 bucles.
 

Hay algun algoritmo que solucione este problema

Gracias espero haberme explicado bien.

ProfesorX:
Pues no, casi no se entiende lo que quieres hacer, aunque te dire que si no sabes cuantas veces haras un ciclo, podrias utilizar un while en lugar de for.

Ademas, no veo el caso de tu declaracion:


--- Código: Text ---   struct Datos{    short Dato1;    short Dato2;    short Dato3;    short Dato4; }  Datos Coleccion[5];  
Si todos los datos de tu struct son iguales (short en este caso), ¿no seria mas sencillo utilizar una matriz de 5x4?


--- Código: Text --- short Coleccion[5][4];  
Bueno, es mi opinion.

Saludos :)

neg1414:
Tienes toda la razon

  Gracias

Navegación

[0] Índice de Mensajes

Ir a la versión completa