Ejercicio de programación - Validar fecha
Diseñar el algoritmo de un programa (y codificarlo en un lenguaje de programación) que:
1º) Pida por teclado una fecha en tres variables: día, mes y año (datos enteros).
2º) Muestre por pantalla:
- "FECHA CORRECTA", en el caso de que la fecha sea válida.
- "FECHA INCORRECTA", en el caso de que la fecha no sea válida.
Nota 1: Para que una fecha sea válida, se tiene que cumplir que:
- El mes debe ser mayor o igual que 1 y menor o igual que 12.
- El día debe ser mayor o igual que 1 y menor o igual que un número, el cual dependerá del mes y año introducidos por el usuario.
Nota 2:
- Tienen 31 días: enero, marzo, mayo, julio, agosto, octubre y diciembre.
- Tienen 30 días: abril, junio, septiembre y noviembre.
- Tiene 29 días: febrero (si el año es bisiesto).
- Tiene 28 días: febrero (si el año no es bisiesto).
Nota 3: Son bisiestos todos los años múltiplos de 4, excepto aquellos que son múltiplos de 100 pero no de 400.
En pantalla se verá, por ejemplo:

Solución (pseudocódigo):
Algoritmo Validar_Fecha
Definir dia, mes, anio Como Entero
Escribir Sin Saltar "Introduzca dia: "
Leer dia
Escribir Sin Saltar "Introduzca mes: "
Leer mes
Escribir Sin Saltar "Introduzca año: "
Leer anio
Si mes >= 1 & mes <= 12 Entonces
Segun mes Hacer
1, 3, 5, 7, 8, 10, 12:
Si dia >= 1 & dia <= 31 Entonces
Escribir "FECHA CORRECTA"
SiNo
Escribir "FECHA INCORRECTA"
FinSi
4, 6, 9, 11:
Si dia >= 1 & dia <= 30 Entonces
Escribir "FECHA CORRECTA"
SiNo
Escribir "FECHA INCORRECTA"
FinSi
2:
Si anio % 4 = 0 & anio % 100 <> 0 | anio % 400 = 0 Entonces
Si dia >= 1 & dia <= 29 Entonces
Escribir "FECHA CORRECTA"
SiNo
Escribir "FECHA INCORRECTA"
FinSi
SiNo
Si dia >= 1 & dia <= 28 Entonces
Escribir "FECHA CORRECTA"
SiNo
Escribir "FECHA INCORRECTA"
FinSi
FinSi
FinSegun
SiNo
Escribir "FECHA INCORRECTA"
FinSi
FinAlgoritmo
Solución (Python):
dia=int(input("Introduzca día:"))
mes=int(input("Introduzca mes:"))
anio=int(input("Introduzca año:"))
if mes >= 1 and mes <=12:
if mes == 1 or mes == 3 or mes == 5 or mes == 7 or mes == 8 or mes == 10 or mes == 12:
if dia >= 1 and dia <= 31:
print("FECHA CORRECTA")
else:
print("FECHA INCORRECTA")
elif mes == 4 or mes == 6 or mes == 9 or mes == 11:
if dia >= 1 and dia <= 30:
print("FECHA CORRECTA")
else:
print("FECHA INCORRECTA")
elif mes == 2:
if anio % 4 == 0 and anio % 100 != 0 or anio % 400 == 0:
if dia >= 1 and dia <= 29:
print("FECHA CORRECTA")
else:
print("FECHA INCORRECTA")
else:
if dia >= 1 and dia <= 28:
print("FECHA CORRECTA")
else:
print("FECHA INCORRECTA")
else:
print("FECHA INCORRECTA")