EMPEZAR DE CERO A PROGRAMAR EN LENGUAJE C
C/C++/C# HTML Java JavaScript Linux PHP Python Swift
 Recursos > Código fuente > Capítulo 12 > Ejemplo 12.10
Validar fecha
 Código fuente (Solución 1)
#include <stdio.h>

int main()
{
   int dia, mes, anio;

   printf( "\n   Introduzca dia: " );
   scanf( "%d", &dia );
   printf( "\n   Introduzca mes: " );
   scanf( "%d", &mes );
   printf( "\n   Introduzca anio: " );
   scanf( "%d", &anio );

   if ( mes >= 1 && mes <= 12 )
   {

      switch ( mes )
      {
         case  1 :
         case  3 :
         case  5 :
         case  7 :
         case  8 :
         case 10 :
         case 12 : if ( dia >= 1 && dia <= 31 )
                      printf( "\n   FECHA CORRECTA" );
                   else
                      printf( "\n   FECHA INCORRECTA" );
                   break;

         case  4 :
         case  6 :
         case  9 :
         case 11 : if ( dia >= 1 && dia <= 30 )
                      printf( "\n   FECHA CORRECTA" );
                   else
                      printf( "\n   FECHA INCORRECTA" );
                   break;

         case  2 : if ( anio % 4 == 0 && anio % 100 != 0 ||
                        anio % 400 == 0 )

                      if ( dia >= 1 && dia <= 29 )
                         printf( "\n   FECHA CORRECTA" );
                      else
                         printf( "\n   FECHA INCORRECTA" );
                   else
                      if ( dia >= 1 && dia <= 28 )
                         printf( "\n   FECHA CORRECTA" );
                      else
                         printf( "\n   FECHA INCORRECTA" );
      }

   }
   else
      printf( "\n   FECHA INCORRECTA" );

   return 0;
}
 Código fuente (Solución 2)
#include <stdio.h>

int main()
{
   int dia, mes, anio, fecha_correcta /* interruptor */;

   printf( "\n   Introduzca dia: " );
   scanf( "%d", &dia );
   printf( "\n   Introduzca mes: " );
   scanf( "%d", &mes );
   printf( "\n   Introduzca anio: " );
   scanf( "%d", &anio );

   fecha_correcta = 0;

   if ( mes >= 1 && mes <= 12 )
   {

      switch ( mes )
      {
         case  1 :
         case  3 :
         case  5 :
         case  7 :
         case  8 :
         case 10 :
         case 12 : if ( dia >= 1 && dia <= 31 )
                      fecha_correcta = 1;
                   break;

         case  4 :
         case  6 :
         case  9 :
         case 11 : if ( dia >= 1 && dia <= 30 )
                      fecha_correcta = 1;
                   break;

         case  2 : if ( anio % 4 == 0 && anio % 100 != 0 ||
                        anio % 400 == 0 )

                   {
                      if ( dia >= 1 && dia <= 29 )
                         fecha_correcta = 1;
                   }
                   else
                      if ( dia >= 1 && dia <= 28 )
                         fecha_correcta = 1;
      }

   }

   /* Llegados a este punto, según el valor de fecha_correcta,
      por pantalla se mostrará un mensaje u otro. */

   if ( fecha_correcta )
      printf( "\n   FECHA CORRECTA" );
   else
      printf( "\n   FECHA INCORRECTA" );

   return 0;

}
 Código fuente (Solución 3)
#include <stdio.h>

int main()
{
   int dia_maximo, dia, mes, anio, fecha_correcta /* Interruptor */;

   printf( "\n   Introduzca dia: " );
   scanf( "%d", &dia );
   printf( "\n   Introduzca mes: " );
   scanf( "%d", &mes );
   printf( "\n   Introduzca anio: " );
   scanf( "%d", &anio );

   fecha_correcta = 0;

   if ( mes >= 1 && mes <= 12 )
   {

      switch ( mes )
      {
         case  1 :
         case  3 :
         case  5 :
         case  7 :
         case  8 :
         case 10 :
         case 12 : dia_maximo = 31;
                   break;

         case  4 :
         case  6 :
         case  9 :
         case 11 : dia_maximo = 30;
                   break;

         case  2 : if ( anio % 4 == 0 && anio % 100 != 0 ||
                        anio % 400 == 0 )

                      dia_maximo = 29;
                   else
                      dia_maximo = 28;
      }

      if ( dia >= 1 && dia <= dia_maximo )
         fecha_correcta = 1;

   }

   if ( fecha_correcta )
      printf( "\n   FECHA CORRECTA" );
   else
      printf( "\n   FECHA INCORRECTA" );

   return 0;
}
 Ficheros con extensión (.c)
ejemplo_12_10_1.c
ejemplo_12_10_2.c
ejemplo_12_10_3.c