Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 01-04-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
Viendo rápidamente tu código, creo que has mal implementado el algoritmo. Te voy a proporcionar una pseudo implementación basada en lo que he entendido. Me parece que nos has enseñado algo muy interesante hoy

Código Delphi [-]
type
    TSexo = (sexMujer, sexVaron, sexDesconocido);
...

function DeterminarSex(FNacimientoMadre: TDate; FNacimientoPadre: TDate; FechaConcepcion: TDate): TSexo;
var
    I: Integer;
    FechasGonadas: Array of Array[(sexMujer, sexVaron)] of TDate;
    MenorDiferencia: Integer;
    MDiff, VDIff: Integer;
begin
    // calculamos fechas de renovación de las Gonadas
    I := 0;
    MenorDiferencia := High(Integer);

    while not ((YearOf(FNacimientoMadre) + (4 * (I - 1)) >= YearOf(FechaConcepcion)) and
               (YearOf(FNacimientoPadre) + (5 * (I - 1)) >= YearOf(FechaConcepcion))) do
    begin
        SetLength(FechasGonadas, Length(FechasGonadas) + 1);
        FechasGonadas[i][SexMujer] := IncYear(FNacimientoMadre, 4 * (I +1));
        FechasGonadas[i][SexVaron] := IncYear(FNacimientoPadre, 5 * (I +1));

        // calculamos la fecha de concepción más cercana a una renovación
        MDiff := DaysBetween(FechaConcepcion, FechasGonadas[i][SexMujer]);
        VDIff := DaysBetween(FechaConcepcion, FechasGonadas[i][SexVaron]);

        if MDiff < 0 then MDiff := (MDiff * -1);
        if VDIff < 0 then VDIff := (VDIff * -1);

        // guardamos la diferencia más cercana conocida
        if Min(MDiff, VDIff) < MenorDiferencia then
            MenorDiferencia := Min(MDiff, VDIff);

        // comparamos cúal de ambos sexos tiene menor diferencia
        if MDiff = Min(MDiff, VDIff) then
            if MDiff <= MenorDiferencia then
                Result := TSexo(sexMujer);

        if VDIff = Min(MDiff, VDIff) then
            if VDIff <= MenorDiferencia then
                Result := TSexo(sexVaron);

        Inc(I);
    end;
end;

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
 



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
Ayuda para hacer un algoritmo de busqueda y comparacion JoAnCa Varios 7 23-12-2008 22:55:28
ayuda para elaborar un codigo josi Varios 2 22-09-2008 15:34:02
Recomendación para elaborar diagramas de clases y dominios para mi sitio dark_monk9 PHP 2 25-07-2008 20:18:03
Elaborar Clase Para Validar Un Dato De Un Edit sdiaz1983 Varios 7 17-03-2008 15:16:36


La franja horaria es GMT +2. Ahora son las 08:34:22.


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