Guarda qua:
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
// questo ciclo viene eseguito 12 volte
if( m == month[M] )
y+= 1;
if( (y % 4 == 0 && y % 100 != 0) || y % 400 == 0 )
month[1] = f;
i++;
}
d+=1; /* lo sommi a fine ciclo */
printf("Il giorno seguente e' il --> %2d %2d %4d.\n\n\n", d, m, y);
system("PAUSE");
return 0;
}
Bastava metterlo alla fine,mettendolo dentro al ciclo d veniva incrementato 12 volte.
Ma comunque non fai il controllo sulla data,ti da per buone date con valori oltre i limiti standard delle date (es.: il mese 1/12).
Io ti consiglio di fare il controllo sul mese/giorno che viene inserito.
Potresti utilizzare una struttura o un array,ecco un esempio:
codice:
int data[]={0,0,0},count=0; // giorno,mese,anno;
char stringa[10];
...
while(data[0]<1||data[0]>31)
{
if(count)
printf("Errore di digitazione,inserire un mese (1/12): ");
else
printf("Inserisci mese: ");
gets(stringa);
data[0]=atoi(stringa);
count ++;
}
In questo caso ho usato atoi,ogni errore di digitazione viene riportato.