Ciao! Ho un problemino nel mio programma che deve restituire la data del giorno successiva a quella che inserisce l'utente. Il problema credo sia nella condizione if - else all'interno del ciclo while, riguardante il controllo dell'eventuale ultimo giorno del mese.
E' scorretta, perché restituisce il giorno incrementato di 12, quanto vale M, il numero dei mesi. Se la sposto al di fuori del ciclo, il giorno si incrementerà di 2, come è ovvio che avvenga.

Lo posto qui :


codice:
#include <stdio.h>              
#include <stdlib.h>

#define M 12


main() { 
  int d;
  int month[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  int m = 01;
  int y; 
  int f = 29;
  int i = 0;                   
  int first = 01;
  
  printf("Inserisci una data --> ");
  scanf("%2d%2d%4d", &d, &m, &y);
  printf("\n\n");
                                                 
  while(i < M) {
    if(month[i] == d)
      d = first;
        else                  
          d+= 1;          // L'errore è qui : somma sempre +12 a 'd'. Come faccio a spostare fuori dal ciclo questa istruzione??  :incupito:                 
          
  if( m == month[M] )                           
    y+= 1;
  
  if( (y % 4 == 0 && y % 100 != 0) || y % 400 == 0 )  
    month[1] = f;
    
  i++;
}  
  printf("Il giorno seguente e' il --> %2d %2d %4d.\n\n\n", d, m, y);
                          
system("PAUSE");
return 0;
}
Ed il resto del programma l'ho scritto correttamente?