Modifique un poco tu codigo para que funcione. Las funciones de conio.h simplemente las quite porque no suelo usar esa lib, por eso nada mas.
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
#define es_anio_bisiesto(y) ((((y)%400)==0)||((((y)%4)==0)&&(((y)%100)!=0)))
struct Fecha{
int da_mon;
int da_day;
int da_year;
};
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;
}
/*Aca debe retornar enum bool y no bool solamente porque la estructura
esta declarada así.
Podrias usar typedef para renombrarlo a boolean si quieres
Ademas el parametro de la función debe ser un puntero a struct fecha */
enum bool es_fecha_valida ( struct Fecha *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;
}
int main(){
struct Fecha 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;
if(es_fecha_valida(&fecha1))
printf("La fecha1 es valida\n"); else
printf("La fecha1 NO es valida\n");
if(es_fecha_valida(&fecha2))
printf("La fecha2 es valida"); else
printf("La fecha2 NO es valida");
return 0;
}
Saludos
------------------------------------
visiten www.devshared.net