""" Sección Declarativa Descripción: Calcula el día de la semana para una fecha dada (posterior al 15/10/1582) usando la Congruencia de Zeller. Casos de prueba: - 15821015 -> Viernes (Primer día del Gregoriano) - 20250313 -> Jueves (Fecha de referencia) - 20000101 -> Sábado (Inicio de milenio) - 19691020 -> Lunes (Llegada a la Luna) - 20240229 -> Jueves (Bisiesto) Recursos: - fecha (int): Entrada del usuario en formato AAAAMMDD. - anio, mes, dia (int): Componentes de la fecha. - K, J, h (int): Variables intermedias de Zeller. - nombre_dia (str): Día de la semana resultante. """ # Sección Algorítmica # 1) Prólogo print("--- Determinación del Día de la Semana (Zeller) ---") fecha = int(input("Ingrese una fecha válida (AAAAMMDD, posterior a 15821015): ")) # 2) Desarrollo # Extracción de los componentes de la fecha anio = fecha // 10000 mes = (fecha // 100) % 100 dia = fecha % 100 # Ajuste de Zeller para enero y febrero (meses 13 y 14 del año anterior) if mes <= 2: mes = mes + 12 anio = anio - 1 # Variables intermedias K = anio % 100 # Año dentro del siglo J = anio // 100 # Siglo # Fórmula de Zeller con división entera (piso) h = (dia + (13 * (mes + 1)) // 5 + K + K // 4 + J // 4 - 2 * J) % 7 # Traducción del resultado numérico al nombre del día usando cadena de decisiones if h == 0: nombre_dia = "Sábado" elif h == 1: nombre_dia = "Domingo" elif h == 2: nombre_dia = "Lunes" elif h == 3: nombre_dia = "Martes" elif h == 4: nombre_dia = "Miércoles" elif h == 5: nombre_dia = "Jueves" elif h == 6: nombre_dia = "Viernes" # 3) Epílogo print(f"\nLa fecha ingresada corresponde a un {nombre_dia}.") input("\nPulse Enter para terminar el programa")