Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/02/2010, 12:24
devshared
 
Fecha de Ingreso: enero-2010
Mensajes: 25
Antigüedad: 15 años
Puntos: 0
Busqueda Respuesta: Validar Fecha en C (struct)

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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define es_anio_bisiesto(y)  ((((y)%400)==0)||((((y)%4)==0)&&(((y)%100)!=0)))
  5.  
  6. struct Fecha{
  7.     int da_mon;
  8.     int  da_day;
  9.     int  da_year;      
  10. };
  11.  
  12.  
  13. enum bool{
  14.     FALSE = 0,
  15.     TRUE = 1
  16. };
  17.  
  18. enum Mes{
  19.    Enero = 1,
  20.    Febrero = 2,
  21.    Marzo = 3,
  22.    Abril = 4,
  23.    Mayo = 5,
  24.    Junio = 6,
  25.    Julio = 7,
  26.    Agosto = 8,
  27.    Septiembre = 9,
  28.    Octubre = 10,
  29.    Noviembre = 11,
  30.    Diciembre = 12
  31. };
  32.  
  33.  
  34. int dias_en_el_mes (int y, int m){
  35.     const int dias[12] = { 31, 28, 31, 30, 31, 30,
  36.                            31, 31, 30, 31, 30, 31 };
  37.    int resultado;
  38.  
  39.    resultado = dias[m-1];
  40.  
  41.    if ( m == Febrero && es_anio_bisiesto ( y ) )
  42.       resultado++;
  43.  
  44.    return resultado;
  45. }
  46.  
  47. /*Aca debe retornar enum bool y no bool solamente porque la estructura
  48. esta declarada así.
  49. Podrias usar typedef para renombrarlo a boolean si quieres
  50. Ademas el parametro de la función debe ser un puntero a struct fecha   */
  51.  
  52. enum bool es_fecha_valida ( struct Fecha *fecha ){
  53.    if ( fecha->da_mon < Enero || fecha->da_mon > Diciembre )
  54.       return FALSE;
  55.  
  56.    if ( fecha->da_day < 0 || fecha->da_day >=
  57.              dias_en_el_mes ( fecha->da_year, fecha->da_mon ) )
  58.       return FALSE;
  59.  
  60.    return TRUE;
  61. }
  62.  
  63. int main(){
  64.    struct Fecha fecha1, fecha2;
  65.    fecha1.da_day=1;
  66.    fecha1.da_mon=6;
  67.    fecha1.da_year=2006;
  68.  
  69.    fecha2.da_day=30;
  70.    fecha2.da_mon=2;
  71.    fecha2.da_year=2006;
  72.  
  73.  
  74.    if(es_fecha_valida(&fecha1))
  75.       printf("La fecha1 es valida\n");
  76.    else
  77.       printf("La fecha1 NO es valida\n");
  78.  
  79.    if(es_fecha_valida(&fecha2))
  80.       printf("La fecha2 es valida");
  81.    else
  82.       printf("La fecha2 NO es valida");
  83.      
  84.    system("PAUSE");
  85.    return 0;
  86. }

Saludos



------------------------------------
visiten www.devshared.net


Última edición por devshared; 06/02/2010 a las 12:41