#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#define es_anio_bisiesto(y) ((((y)%400)==0)||((((y)%4)==0)&&(((y)%100)!=0)))
struct date fecha;
enum bool
{
false = 0,
true = 1
};
enum Mes
{
Enero = 1,
Febrero = 2,
Marzo = 3,
Abril = 4,
Mayo = 5,
Junio = 6,
Julio = 7,
Agosto = 8,
Septiembre = 9,
Octubre = 10,
Noviembre = 11,
Diciembre = 12
};
int dias_en_el_mes (int y, int m)
{
const int dias[12] = { 31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31 };
int resultado;
resultado = dias[m-1];
if ( m == Febrero && es_anio_bisiesto ( y ) )
resultado++;
return resultado;
}
bool es_fecha_valida ( struct date fecha )
{
if ( fecha.da_mon < Enero || fecha.da_mon > Diciembre )
return false;
if ( fecha.da_day < 0 || fecha.da_day >=
dias_en_el_mes ( fecha.da_year, fecha.da_mon ) )
return false;
return true;
}
void main()
{
struct date fecha1, fecha2;
fecha1.da_day=1;
fecha1.da_mon=6;
fecha1.da_year=2006;
fecha2.da_day=30;
fecha2.da_mon=2;
fecha2.da_year=2006;
clrscr();
if(es_fecha_valida(fecha1))
printf("La fecha1 es validan");
else
printf("La fecha1 NO es validan");
if(es_fecha_valida(fecha2))
printf("La fecha2 es valida");
else
printf("La fecha2 NO es valida");
getch();
}