#include <stdio.h>
#include <conio.h>
#define Booleano int
#define Verdadero 1
#define Falso 0
unsigned int dia;
unsigned int mes;
long int anio;
Booleano esBisiesto;//indicador de anio bisiesto
Booleano fechaValida;//indicador de fecha valida
void AnioBisiesto()
{
esBisiesto=(anio%4==0)&&(anio%100!=0)||
(anio%400)&&(anio!=3600);
}
int main()
{
clrscr();
printf("\n");
printf("****\n");
printf("**** Algoritmo: Comprobar si una fecha es correcta ****\n");
printf("****\n");
printf("\n");
printf("Introduzca el dia: ");
scanf("%u", &dia);
while(getchar() != '\n');
printf("Introduzca el mes: ");
scanf("%u", &mes);
while(getchar() != '\n');
printf("Introduzca el anio: ");
scanf("%ld",&anio);
while(getchar() != '\n');
fechaValida=Verdadero;
if(dia<1) fechaValida=Falso;
else
switch(mes)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: //meses de 31 dias
if(dia>31)
fechaValida=Falso; break;
case 4:
case 6:
case 9:
case 11://meses de 30 dias
if(dia>30)
fechaValida=Falso; break;
case 2://mes de febrero
AnioBisiesto();
if((dia>29)||(!esBisiesto && (dia>28)))
fechaValida=Falso; break;
default: fechaValida=Falso; break;
}
printf("%u/ %u/ %ld", dia, mes, anio);
if(fechaValida) printf(" es una fecha valida\n");
else printf("no es una fecha valida\n");
printf("\nPulse enter para continuar");
getchar();
return 0;
}
Algoritmo en C:Comprobar si una fecha es correcta
En este ejemplo ingresaremos el dia, el mes y el año y con switch case analizamos el mes ingresado para validar si el dia es correcto para ese mes ya que algunos meses como Enero, Marzo, Agosto ... son maximo 31 dias y otros meses como Abril, Junio admiten 30 y tenemos el particular caso de febrero 29 en bisiesto y 28 en años no bisiestos. Para el caso de bisiesto cree un procedimiento el cual valida el año y devuelve un valor booleano


0 comentarios:
Publicar un comentario