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

pseudocode
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

pseudocode
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

pseudocode
Si Longitud(fecha_nac) <> 8 Entonces
    Escribir "Error: Formato debe ser DD-MM-AA"
FinSi

Propósito: Asegurar que la fecha tenga exactamente 8 caracteres.

3.2 Completar el siglo

pseudocode
Si anio_num >= 0 Y anio_num <= 99 Entonces
    anio_num <- 2000 + anio_num
FinSi

Propósito: Convertir "95" en "1995", "05" en "2005", etc.

3.3 Validar año > 1900

pseudocode
Si anio_num <= 1900 Entonces
    Escribir "Error: Año debe ser mayor a 1900"
FinSi

Propósito: Rechazar fechas demasiado antiguas.

3.4 Validar mes (1-12)

pseudocode
Si mes_num < 1 O mes_num > 12 Entonces
    Escribir "Error: Mes inválido"
FinSi

Propó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

pseudocode
edad <- anio_act - anio_num

Ejemplo: 2024 - 1990 = 34 años

4.2 Ajustar si NO ha cumplido años

pseudocode
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
FinSi

CASOS:

  • 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

pseudocode
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

  1. Formato correcto: DD-MM-AA

  2. Año razonable: > 1900

  3. Mes válido: 1-12

  4. Días por mes: Según calendario

  5. 29 de febrero: Rechazado

Comentarios

Entradas más populares de este blog

1-valores duplicados en un arreglo

Pseudocódigo de la Máquina Expendedora

Trabajas en una compañía que ofrece seguros de vida y de gastos