Programación General > Pascal
Calcular Edad A Partir De Fechas.
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 >= MesActual) and (DiaNacimiento >= 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 >= Actual.Mes) and (Nacimiento.Dia >= 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
[#] Página Siguiente
Ir a la versión completa