/* Leer una fecha en formato dia-mes-año, averiguar si es correcta e indicar el día siguiente. */

#include <stdio.h>
#define TRUE 1
#define FALSE 0

int correcta_fecha(int,int,int);
int bisiesto(int); 

void main()
{
  int dia,mes,anio;
  printf("Dame una fecha:(dd-mm-aaaa)");
  scanf("%d-%d-%d",&dia,&mes,&anio);
  if (!correcta_fecha(dia,mes,anio))
     printf("\nLa fecha no es correcta.");
}

int correcta_fecha(int dia,int mes,int anio)
{
 int d;
 switch (mes)
 {
   case 4:
   case 6:
   case 9:
   case 11:d=30;
                  break;
   case 1:
   case 3:
   case 5:
   case 7:
   case 8:
   case 10:
   case 12: d=31;
                   break;
   case 2: if (bisiesto(anio))
                    d=29;
                 else
                    d=28;
                 break;
   default: return FALSE;
 }
 if (dia<=d)
  { 
    if (dia<d)
       dia++;
    else
    {
      dia=1;
      if (mes==12)
      {
        mes=1; 
        anio++;
      }
      else
        mes++;
    }
    printf("\nEl proximo dia sera:%2d-%2d-%d.",dia,mes,anio);
    return TRUE;
  }
  else
    return FALSE; 
}

/* Un ano es bisiesto cuando es multiplo de 4 pero no de 100 o multiplo de 400. */
int bisiesto(int anio)
{
if ((anio%4==0 && anio%100!=0) || (anio%400==0)) return TRUE;
return FALSE;
}

d VOLVER