• Viernes 8 de Noviembre de 2024, 11:29

Autor Tema:  Algoritmo Calcular Combinaciones  (Leído 1920 veces)

neg1414

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Algoritmo Calcular Combinaciones
« en: Jueves 6 de Marzo de 2008, 20:33 »
0
Buenas, Haber si me explico:

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

Código: Text
  1.  
  2.  
  3.   struct Datos{
  4.      short Dato1;
  5.      short Dato2;
  6.      short Dato3;
  7.      short Dato4;
  8.   }
  9.  
  10.   Datos Coleccion[5];
  11.  
  12. ]
  13.  

 con ella debo de calcular todas la combianciones posibles entre sus datos
de la forma


Código: Text
  1.  
  2.  
  3.   short Combinaciones[NumCombinaciones][5]  //Subgeneris
  4.  
  5.  
  6.   Combinaciones[0].[0] =  Coleccion[0].Dato1;
  7.   Combinaciones[0].[1] =  Coleccion[1].Dato1;
  8.   Combinaciones[0].[2] =  Coleccion[2].Dato1;
  9.   Combinaciones[0].[3] =  Coleccion[3].Dato1;
  10.   Combinaciones[0].[4] =  Coleccion[4].Dato1;
  11.  
  12.   Combinaciones[1].[0] =  Coleccion[0].Dato1;
  13.   Combinaciones[1].[1] =  Coleccion[1].Dato1;
  14.   Combinaciones[1].[2] =  Coleccion[2].Dato1;
  15.   Combinaciones[1].[3] =  Coleccion[3].Dato1;
  16.   Combinaciones[1].[4] =  Coleccion[4].[b]Dato2;[/b]
  17.                  
  18.  
  19.   Combinaciones[2].[0] =  Coleccion[0].Dato1;
  20.   Combinaciones[2].[1] =  Coleccion[1].Dato1;
  21.   Combinaciones[2].[2] =  Coleccion[2].Dato1;
  22.   Combinaciones[2].[3] =  Coleccion[3].Dato1;
  23.   Combinaciones[2].[4] =  Coleccion[4].[b]Dato3;[/b]
  24.                  
  25.  
  26.   Asi Sucesivamente hasta completar todas las  Combinaciones
  27.  
  28.  
  29.   Combinaciones[1024].[0] =  Coleccion[0].[b]Dato4;[/b]
  30.   Combinaciones[1024].[1] =  Coleccion[1].[b]Dato4;[/b]
  31.   Combinaciones[1024].[2] =  Coleccion[2].[b]Dato4;[/b]
  32.   Combinaciones[1024].[3] =  Coleccion[3].[b]Dato4;[/b]
  33.   Combinaciones[1024].[4] =  Coleccion[4].[b]Dato4;[/b]
  34.  
  35.  
  36.  
  37.  



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

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Algoritmo Calcular Combinaciones
« Respuesta #1 en: Jueves 6 de Marzo de 2008, 21:13 »
0
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
  1.  
  2.   struct Datos{
  3.     short Dato1;
  4.     short Dato2;
  5.     short Dato3;
  6.     short Dato4;
  7.  }
  8.  
  9.  Datos Coleccion[5];
  10.  
  11.  

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
  1.  
  2. short Coleccion[5][4];
  3.  
  4.  

Bueno, es mi opinion.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

neg1414

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Algoritmo Calcular Combinaciones
« Respuesta #2 en: Viernes 7 de Marzo de 2008, 17:19 »
0
Tienes toda la razon

  Gracias