Hola a todos
Existe un calculo para predecir el sexo del futuro bebe basado en las fechas de nacimiento de los padres, y la renovacion de las gonadas cada 5 años para el padre y cada 4 para la madre, aunque no es 100% exacto (ningun metodo de este tipo lo es), pero es bastante preciso
Para no tener que hacerlo a mano, quise automatizarlo, pero aunque el calculo es bastante facil, el problema se me presento al ubicar las fechas en una tabla
La tabla debe salir algo como esto:
Desde Hasta Sexo
02/05/1971 17/12/1976 Varon
17/12/1976 02/15/1981 Hembra
...
Ahora, el calculo a mano, como lo hago es haciendo una lista con los años de cada uno, sumandodole 4 o 5 respectivamente
Despues comparo la fecha de embarazo con la fecha mas cercana de los dos, y la que mas cerca este (por debajo) es la que determina el sexo
Ejemplo:
Padre Madre
1980 1984
1985 1988
1990 1992
1995 1996
Fecha de embarazo 1991
En este caso 1991 esta mas cerca de 1990 que de 1988 (siempre se compara con fechas pasadas) por tanto sera varon
Pero a mano es facil con solo mirarlo, llevarlo a una tabla es lo complicado
En una tabla no solo sirve para saber el sexo del bebe por nacer, tambien serviria para planificar el sexo de los hijos antes de concebirlos
Hasta ahora esto es lo que hecho, pero solo me salen bien los 2 primeros rangos, a partir del 3ro me salen todos iguales
Por supuesto que este metodo no debe ser el correcto, por eso necesito la ayuda de uds para ver como ubico los rangos en la tabla
Código Delphi
[-]
var
Form1: TForm1;
Padre, Madre :array[1..25] of TDateTime;
Desde, Hasta :TDateTime;
Sexo :string;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i :Integer;
Ap, Am :Word;
begin
Padre[1]:=StrToDate(FechPadre.Text); Madre[1]:=StrToDate(FechMadre.Text);
Ap:=YearOf(Padre[1]); Am:=YearOf(Madre[1]);
for i:=2 to 25 do
begin
Ap:=Ap + 5;
Am:=Am + 4;
Padre[i]:=RecodeYear(Padre[1], Ap);
Madre[ i ]:=RecodeYear(Madre[1], Am);
end;
if YearOf(Padre[1]) < YearOf(Madre[1]) then
begin
Desde:=Padre[1];
Hasta:=Madre[1];
Listado.Cells[2,1]:='Varón';
end
else
begin
Desde:=Madre[1];
Hasta:=Padre[1];
Listado.Cells[2,1]:='Hembra';
end;
Listado.Cells[0,1]:=DateToStr(Desde);
Listado.Cells[1,1]:=DateToStr(Hasta);
for i:=2 to 25 do
begin
Desde:=Hasta;
if Hasta > Padre then
begin
Sexo:='Hembra';
end
else
if Hasta < Padre then
begin
Sexo:='Varón';
end
else
Sexo:='??';
if Hasta = Madre then
Hasta:=Padre[i+1]
else
Hasta:=Madre[i+1];
Listado.Cells[0,i]:=DateToStr(Desde);
Listado.Cells[1,i]:=DateToStr(Hasta);
Listado.Cells[2,i]:=Sexo;
end;
end;