Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-04-2018
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 13
bucanero Va camino a la fama
Cita:
Empezado por danielmj Ver Mensaje
Parece que recorre la lista3 y lo compara con per pero incluso habiendo una combinación real de 5 aciertos sigue sin encontrarla...
El problema yo lo veo en el proceso que te rellena el listbox llamado PER con la función combinatoria2 que lo único que hace es cambiar el orden de una combinación de numeros entre ellos, pero que al aplicar la función ValorCombinacion te va a devolver siempre el mismo valor de combinación, independientemente del orden de los elementos.

De hecho haz la siguiente prueba, ejecuta este procedimiento y veras como a cada permutación de tu lista PER obtienes el mismo valor en la función ValorCombinacion, y eso solo te hace repetir cálculos innecesarios una y otra vez

Código Delphi [-]
procedure TEST;
var 
  i: longint;
begin
  // llama aqui a la funcion que te rellena el listbox PER 
  // combinatoria2([1, 4, 5, 12, 24], PER.Items);
  Memo1.Clear;
  with Per do begin
    for i := 0 to Count - 1 do begin
      //convierto el string separado por espacios a una lista
      list.Clear;
      list.delimitedText := items[i];
      //mostrar resultado
      Memo1.Lines.Add(items[i] + #9 + IntTostr(ValorCombinacion(list)));
    end;
  end; 
end;

Creo que no necesitas ni el listbox PER ni la función que te lo rellena. Para generar una combinación aleatoria yo usaría algo así:

Código Delphi [-]

const 
  maxNum:integer=49; //<-- Numero maximo de elementos

var
  combinacion:Int64;

 ...
 for N1 := 1 to maxNum - 5 do
    for N2 := N1 + 1 to maxNum - 4 do
      for N3 := N2 + 1 to maxNum - 3 do
        for N4 := N3 + 1 to maxNum - 2 do
          for N5 := N4 + 1 to maxNum - 1 do
            for N6 := N5 + 1 to maxNum do begin
              //codifica la combinacion en un Int64
              combinacion := ValorCombinacion(n1, n2, n3, n4, n5, n6);
              analizarCombinacion(combinacion);
            end;
  ...

Y todo fuera de los componentes visuales.

Yo te recomiendo que para separar toda la parte visual de los cálculos, utilices un datamodule o una simple unidad independiente para meter todos los procesos referentes a calculo y en el formulario solo dejes la parte visual.

Y por tema de velocidad en el tipo de rutinas que hacen calculos de forma masiva, intentan en la medida de todo lo posible no hacer llamadas a elementos visuales ni refresco de la información de los mismos, pues son rutinas que se pueden ejecutar varios millones de veces, y las llamadas a componentes visuales son muy lentas, a parte de que te pueden dejar muy tirado el programa.

Cita:
Empezado por danielmj Ver Mensaje
Código Delphi [-]
procedure TForm1.CompararCombinaciones(const Cad1, cad2:Int64);
...
  label21.Caption:= IntToStr(cad1);
...
    ShowMessage('Iguales');
...
end;
Un saludo
Responder Con Cita
  #2  
Antiguo 22-04-2018
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Bueno, gracias por vuestro tiempo.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #3  
Antiguo 08-05-2018
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Hola de nuevo,

Sigo con lo mismo porque no lo consigo, me estoy centrando en el método de bucanero y tengo una duda. en los edit1,2,3,4,5 y 6 están los numeros que mas veces salen. En su método, se comparan dos listbox completos, pero y si quiero comparar tan solo 1 item de un listbox con todos los de otro listbox? por que a mi me da error.

saludos
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #4  
Antiguo 09-05-2018
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 13
bucanero Va camino a la fama
hola danielmj,

Puedes poner la parte del código que te da error. Y el error que te da

saludos
Responder Con Cita
  #5  
Antiguo 09-05-2018
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Hola bucanero, ya no se ni que poner, estoy tan quemado con esto que me tiene frustrado.
Estoy comenzando un núevo método para generar números aleatorios sin repeticiones y a partir de ahí sacar los mas repetidos y sobre los mas repetidos (que formarian una combinacion de 6 numeros) le implementaria tu método de comparar combinaciones, solo que sería entre esos 6 unicos numeros y todo un listbox en el que he volcado los elementos de un listview (que por ejemplo tiene 5000 combinaciones). Voy a dejarlo ahora por que me tiene ya saturado y prefiero despejarme un poco para poder seguir. XD
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #6  
Antiguo 09-05-2018
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Recuerda, lo primero es apagar el ordenador, después tomar papel y lápiz.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
sumando valores de un listview danielmj Varios 28 14-11-2014 21:52:30
VALORES FANTASMAS FIREBIRD 2.1 valores Grandes ASAPLTDA Firebird e Interbase 17 02-12-2012 12:09:02
Rellenar con 0.... buitrago Varios 6 17-11-2011 20:02:53
¿Cómo insertar una imágen en un lisbox o un memo? Acuarius3000 Gráficos 3 27-06-2005 08:44:53
arastrar archivos a un lisbox gulder C++ Builder 3 05-05-2005 13:31:50


La franja horaria es GMT +2. Ahora son las 07:55:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi