Cálculo de Edad en PSeInt - Explicación Completa
Trabajas en una compañía que ofrece seguros de vida y de gastos
médicos. La empresa está desarrollando una herramienta tecnológica,
para que los agentes puedan calcular el monto de una póliza. Para dicho
cálculo, se consideran varios factores de riesgo, entre los que se encuentra
6
la edad. Por ello, el contratante debe llenar un formulario, incluyendo su
fecha de nacimiento. Como primer reto, deberás calcular la edad del
cliente al momento de la cotización.
La captura de la fecha de nacimiento debe ser en
una sola cadena de texto con formato DD-MM-AA
Debes validar que es una fecha valida:
Para simplificar el algoritmo tomaremos el
dia 29 de febrero como invalido
El año de nacimiento debe ser mayor 1900
No olvides validar si el cliente ya cumplio años en
la fecha de captura o aun no
Cálculo de Edad para Seguros - Explicación Paso a Paso
📋 PROBLEMA COMPLETO
Necesitamos calcular la edad de un cliente para una póliza de seguros, validando que:
La fecha de nacimiento tenga formato DD-MM-AA
Sea una fecha válida (considerando 29 de febrero como inválido)
El año sea mayor a 1900
Determinar si ya cumplió años en la fecha actual
Algoritmo EdadSegurosSimple
Definir fnac, fact, dnac, mnac, anac, dact, mact, aact, edad Como Entero
Definir valido Como Logico
Escribir "FECHA ACTUAL (DD MM AAAA):"
Leer dact, mact, aact
Escribir "FECHA NACIMIENTO (DD MM AA):"
Leer dnac, mnac, anac
// Completar año
Si anac < 100 Entonces
anac <- 2000 + anac
FinSi
valido <- Verdadero
// Validar año
Si anac <= 1900 Entonces
Escribir "Año debe ser > 1900"
valido <- Falso
FinSi
// Validar mes
Si mnac < 1 O mnac > 12 Entonces
Escribir "Mes inválido"
valido <- Falso
FinSi
// Validar día
Si valido Entonces
Si mnac = 2 Y dnac = 29 Entonces
Escribir "29 febrero no válido"
valido <- Falso
FinSi
FinSi
// Calcular edad
Si valido Entonces
edad <- aact - anac
Si mact < mnac O (mact = mnac Y dact < dnac) Entonces
edad <- edad - 1
FinSi
Escribir "EDAD: ", edad, " años"
FinSi
FinAlgoritmo
PASO 1: CAPTURA DE FECHAS
Escribir "Ingrese fecha ACTUAL (DD-MM-AAAA):" Leer fecha_actual_str Escribir "Ingrese fecha de NACIMIENTO (DD-MM-AA):" Leer fecha_nac
Propósito: Obtener ambas fechas necesarias para el cálculo.
🔍 PASO 2: EXTRAER COMPONENTES
dia_act <- ConvertirANumero(SubCadena(fecha_actual_str, 1, 2)) mes_act <- ConvertirANumero(SubCadena(fecha_actual_str, 4, 5)) anio_act <- ConvertirANumero(SubCadena(fecha_actual_str, 7, 10))
Propósito: Separar día, mes y año de ambas fechas y convertirlos a números.
🔍 PASO 3: VALIDACIONES DE FECHA DE NACIMIENTO
3.1 Validar formato
Si Longitud(fecha_nac) <> 8 Entonces
Escribir "Error: Formato debe ser DD-MM-AA"
FinSiPropósito: Asegurar que la fecha tenga exactamente 8 caracteres.
3.2 Completar el siglo
Si anio_num >= 0 Y anio_num <= 99 Entonces
anio_num <- 2000 + anio_num
FinSiPropósito: Convertir "95" en "1995", "05" en "2005", etc.
3.3 Validar año > 1900
Si anio_num <= 1900 Entonces
Escribir "Error: Año debe ser mayor a 1900"
FinSiPropósito: Rechazar fechas demasiado antiguas.
3.4 Validar mes (1-12)
Si mes_num < 1 O mes_num > 12 Entonces
Escribir "Error: Mes inválido"
FinSiPropósito: Asegurar que el mes esté entre 1 y 12.
3.5 Validar días por mes
Meses con 31 días (1,3,5,7,8,10,12): Días entre 1-31
Meses con 30 días (4,6,9,11): Días entre 1-30
Febrero: Días entre 1-28 (29 NO permitido)
🔍 PASO 4: CÁLCULO DE LA EDAD
4.1 Edad base
edad <- anio_act - anio_num
Ejemplo: 2024 - 1990 = 34 años
4.2 Ajustar si NO ha cumplido años
Si mes_act < mes_num Entonces
edad <- edad - 1
Sino Si mes_act = mes_num Entonces
Si dia_act < dia_num Entonces
edad <- edad - 1
FinSi
FinSiCASOS:
Caso 1: Mes actual < Mes cumpleaños
Ejemplo: Hoy es Marzo (3), cumpleaños en Julio (7)
→ RESTA 1 año (aún no cumple)Caso 2: Mes actual = Mes cumpleaños
Si día actual < día cumpleaños → RESTA 1 año
Si día actual >= día cumpleaños → MANTIENE edad
Caso 3: Mes actual > Mes cumpleaños
→ MANTIENE edad (ya cumplió)
🔍 PASO 5: MOSTRAR RESULTADOS
Escribir "Edad del cliente: ", edad, " años"
Si ya_cumplio = Verdadero Entonces
Escribir "Estado: Ya cumplió años este año"
Sino
Escribir "Estado: Aún no cumple años este año"
FinSi🎯 EJEMPLOS PRÁCTICOS
Ejemplo 1: Ya cumplió
Fecha actual: 15-08-2024
Nacimiento: 10-05-1990
Cálculo:
Edad base: 2024 - 1990 = 34
Mes actual (8) > Mes cumpleaños (5) → Ya cumplió
Edad final: 34 años
Ejemplo 2: No ha cumplido
Fecha actual: 15-03-2024
Nacimiento: 20-07-1990
Cálculo:
Edad base: 2024 - 1990 = 34
Mes actual (3) < Mes cumpleaños (7) → No ha cumplido
Edad final: 33 años
Ejemplo 3: Mismo mes
Fecha actual: 15-05-2024
Nacimiento: 20-05-1990
Cálculo:
Edad base: 2024 - 1990 = 34
Mes igual pero día actual (15) < día cumpleaños (20) → No ha cumplido
Edad final: 33 años
🛡️ VALIDACIONES DE SEGURIDAD
Formato correcto: DD-MM-AA
Año razonable: > 1900
Mes válido: 1-12
Días por mes: Según calendario
29 de febrero: Rechazado
Comentarios
Publicar un comentario