/* File: datasucc.c */
/* Time-stamp: "2001-03-12 00:30:39 calvanes" */
/* Scopo: primo esempio significativo di uso di if-then-else annidati e
          istruzione switch */

#include <stdio.h>

int main(void)
  /* Legge giorno, mese ed anno di una data e determina la data del giorno
     successivo. */
{
  int giorno, mese, anno;
  int giorni_del_mese;

  /* lettura della data */
  printf("Data (giorno, mese, anno) ? ");
  scanf("%d%d%d", &giorno, &mese, &anno);
  printf("\nGiorno successivo al %d/%d/%d e` ", giorno, mese, anno);

  /* calcola il numero dei giorni del mese */
  switch (mese) {
  case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    giorni_del_mese = 31;
    break;

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

  case 2:
    if (anno % 4 == 0 && anno != 1900)
      giorni_del_mese = 29;
    else
      giorni_del_mese = 28;
    break;
  }

  /* aggiorna la data del mese successivo */
  if (giorno == giorni_del_mese) {
    giorno = 1;
    if (mese == 12) {
      mese = 1;
      anno++;
    }
    else
      mese++;
  }
  else
    giorno++;

  /* stampa la data aggiornata */
  printf("%d/%d/%d\n", giorno, mese, anno);

  return 0;
}  /* main */