Programación General > Pascal

 Calcular Edad A Partir De Fechas.

(1/4) > >>

thot_ohm:
Hola a todos.

Estoy iniciandome en el mundo de la programación, por lo que espero que no se rían mucho si pregunto algo que ya esté trillado.  :unsure:

En la universidad me pidieron hacer un programa (en Pascal), que entre otras cosas, necesita calcular la edad de una persona a partir de la fecha de nacimiento. Intuitivamente: edad:= fechaactual - fechanacimiento (digo yo...  <_< ). Confieso mi total fracaso a la hora de diseñar una rutina que haga esto. Estoy seguro que debe haber una rutina "estandar" que ejecute esta acción.

Pueden ayudarme a conseguirla??

Por otro lado ¿hay que declarar algún tipo de dato para que el computador lea la fecha adecuadmente?

De antemano gracias por recibir en el grupo a este aprendiz de programador.

Mil gracias!!!

Enko:
Bienvenido. :D
La verdad que no recuerdo cual es el tipo de dato fecha de los compiladores estandard de pascal pero no creo que necesites eso  :P

Todo pasa por tener estas variables mas o menos así:

--- Código: Text --- AnioNacimiento: integer;MesNacimiento: byte;DiaNacimiento: byte; AnioActual: integer;MesActual: byte;DiaNacimiento: byte; Edad: byte;  
Luego ingresas los valore de cada cosa y haces algo parecido a.......

--- Código: Text --- if (MesNacimiento &#62;= MesActual) and (DiaNacimiento &#62;= DiaActual) then   Edad := AnioActual - AnioNacimientoelse  Edad :=  AnioActual - AnioNacimiento - 1;   Supongo que la diferencia entre los años daría la edad solo si, ha cumplido los años,  es decir, el mes y dia de naciemiento es mayor al actual.

Para no tener tantas variables podes usar estructuras:

--- Código: Text --- type   TFecha = record       Anio: integer;       Mes: byte;       Dia: byte;    end;var  Nacimiento, Actual: TFecha;(... para usarlos...)Nacimiento.Anio:= 1986;Nacimienot.Mes := 11;Actual.Anio := 2005;Edad := Actual.Anio- Nacimiento.Anio;      
Saludos
Enko
 :hola:

thot_ohm:
Muchas gracias Enko!!!

Me ayudaste enormemente. Ya hice la rutina, te la adjunto para que la veas y me des tu opinión.


--- Código: Text --- program CalculaEdad; uses  crt; type  TFecha = record    Anio: integer;    Mes: byte;    Dia: byte;  end; var  Nacimiento, Actual: TFecha;  Edad: integer; begin  clrscr;  Actual.Dia:= 9;  Actual.Mes:= 6;  Actual.Anio:= 2005;   writeln ('Introduzca la fecha de nacimiento:');  writeln ('D¡a:');  readln (Nacimiento.Dia);  writeln ('Mes:');  readln (Nacimiento.Mes);  writeln ('Año:');  readln (Nacimiento.Anio);   if (Nacimiento.Mes &#62;= Actual.Mes) and (Nacimiento.Dia &#62;= Actual.Dia) then    Edad:= (Actual.Anio - Nacimiento.Anio)  else Edad:= Actual.Anio - Nacimiento.Anio - 1;   writeln ('La edad es: ' ,Edad);  readln; end.  
De nuevo mil gracias por el recibimiento y la ayuda.

thot_ohm:
Disculpa que se me olvidaba.

¿Como hago para que la rutina obtenga la fecha del sistema?

Enko:

--- Cita de: "thot_ohm" --- Disculpa que se me olvidaba.

¿Como hago para que la rutina obtenga la fecha del sistema?
--- Fin de la cita ---
Creo que vas a tener que cambiar la estructura  TFecha para que todos los datos sean de tipo WORD.
Te adjunto el código de la ayuda de Turbo Pascal sobre eso.

--- Código: Text ---  uses Dos, Crt;  const   days : array [0..6] of String[9] =     ('Sunday','Monday','Tuesday',      'Wednesday','Thursday','Friday',      'Saturday'); var   y, m, d, dow : Word; begin   GetDate(y,m,d,dow);   Writeln('Today is ', days[dow],', ', m:0, '/', d:0, '/', y:0); end.  
Deberás usar la funcion GetDate(Año, Mes, Dia, DiaDeLaSemana).

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa