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

 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


🔍 PRIMERO: Lógica en 2 Pasos

Paso 1: Validación de la Fecha

python
SI la fecha tiene formato correcto (DD-MM-AA) Y
   los días/meses son válidos Y 
   el año > 1900 Y
   no es 29 de febrero
ENTONCES fecha válida
SINO error

Paso 2: Cálculo de Edad

python
edad = año_actual - año_nacimiento
SI (mes_actual < mes_nacimiento) O 
   (mes_actual == mes_nacimiento Y día_actual < día_nacimiento)
ENTONCES edad = edad - 1  # No ha cumplido años todavía

💻 SEGUNDO: Pseudocódigo Detallado

pseudocode
INICIO
    // Paso 1: Capturar y validar fecha
    LEER fecha_nacimiento (formato DD-MM-AA)
    
    // Validar formato básico
    SI longitud(fecha_nacimiento) ≠ 8 O no tiene guiones ENTONCES
        MOSTRAR "Error: Formato debe ser DD-MM-AA"
        TERMINAR
    FIN SI
    
    // Separar en partes
    dia = extraer primeros 2 caracteres
    mes = extraer caracteres 4-5  
    año = extraer últimos 2 caracteres
    
    // Convertir a números y ajustar año
    año_completo = 1900 + año (si año ≥ 0) O 2000 + año (si año < 100)
    
    // Validaciones específicas
    SI año_completo ≤ 1900 ENTONCES error
    SI mes < 1 O mes > 12 ENTONCES error
    SI dia < 1 O dia > días_del_mes(mes, año_completo) ENTONCES error
    SI mes = 2 Y dia = 29 ENTONCES error  // 29 de febrero inválido
    
    // Paso 2: Calcular edad
    OBTENER fecha_actual (día, mes, año actuales)
    
    edad = año_actual - año_completo
    
    // Verificar si ya cumplió años
    SI mes_actual < mes_nacimiento ENTONCES
        edad = edad - 1
    SINO SI mes_actual = mes_nacimiento Y día_actual < día_nacimiento ENTONCES
        edad = edad - 1
    FIN SI
    
    MOSTRAR "Edad calculada: " + edad
FIN

🎯 TERCERO: Analogía (Como una Receta de Cocina)

Fecha de Nacimiento = Receta de un Pastel

  • Formato DD-MM-AA = La receta debe tener ingredientes en orden exacto

  • Validar día/mes = Verificar que las cantidades de harina/huevos sean posibles

  • Año > 1900 = La receta no puede ser de antes de que existieran los hornos modernos

  • 29 de febrero inválido = Como un día "fantasma" que no cuenta

Cálculo de Edad = Contar Velas del Pastel

  • Año actual - año nacimiento = Número total de velas que debería tener

  • Verificar si ya cumplió = ¿Ya pasó el día de tu cumpleaños este año?

    • NO ha cumplido: Quitar 1 vela (todavía usa la cantidad del año pasado)

    • YA cumplió: Dejar todas las velas correspondientes


🔨 CUARTO: Descomposición en Partes Más Pequeñas

SECCIÓN 1: Validación de Formato

python
# Estructura: String → Lista
# Algoritmo: División por separador
fecha_separada = fecha.split("-")
SI longitud(fecha_separada)3 ENTONCES error

SECCIÓN 2: Validación de Valores Numéricos

python
# Estructura: Conversión String a Int
# Algoritmo: Validación por rangos
dia = convertir_a_numero(fecha_separada[0])
mes = convertir_a_numero(fecha_separada[1]) 
año = convertir_a_numero(fecha_separada[2])

SI mes < 1 O mes > 12: error
SI dia < 1: error

SECCIÓN 3: Validación de Días por Mes

python
# Estructura: Array de días por mes
# Algoritmo: Búsqueda en tabla
dias_por_mes = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
max_dias = dias_por_mes[mes-1]

# Validar año bisiesto (pero 29 febrero sigue inválido)
SI es_bisiesto(año) Y mes = 2: max_dias = 28  # Forzamos máximo 28

SI dia > max_dias: error

SECCIÓN 4: Cálculo de Edad Exacta

python
# Estructura: Fechas como tuplas (día, mes, año)
# Algoritmo: Comparación fecha actual vs fecha nacimiento
hoy = obtener_fecha_actual()
edad = hoy.año - nacimiento.año

# Condición para ajustar edad
SI (hoy.mes < nacimiento.mes) O 
   (hoy.mes == nacimiento.mes Y hoy.dia < nacimiento.dia):
    edad = edad - 1

🏗️ ESTRUCTURAS DE DATOS Y ALGORITMOS POR SECCIÓN

1. Validación de Formato

  • Estructura: String (cadena de texto)

  • Algoritmo: split("-") para dividir la fecha

  • Este ciclo/condición: Verificar que tenga exactamente 3 partes después de dividir

2. Conversión y Validación Básica

  • Estructura: Array para días por mes [31, 28, 31, ...]

  • Algoritmo: Conversión string a int con manejo de errores

  • Esta condición: if mes >= 1 and mes <= 12 para validar mes

3. Validación de Días Específicos

  • Estructura: Array indexado por mes

  • Algoritmo: Acceso por índice dias_por_mes[mes-1]

  • Esta condición: if dia > max_dias para validar día máximo

4. Cálculo de Edad Exacta

  • Estructura: Tupla o objeto para fecha (día, mes, año)

  • Algoritmo: Resta de años + condición de ajuste

  • Esta condición: if (mes_actual, dia_actual) < (mes_nac, dia_nac) para verificar si ya cumplió


✅ SOLUCIÓN FINAL INTEGRADA

Cada parte se resuelve secuencialmente, donde la salida de una sección es la entrada de la siguiente. Si cualquier validación falla, el proceso se detiene inmediatamente.

Flujo completo: Entrada → Validar formato → Validar valores → Validar fechas específicas → Calcular edad → Mostrar resultado



Comentarios

Entradas más populares de este blog

1-valores duplicados en un arreglo

Pseudocódigo de la Máquina Expendedora