#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