#include #include #define ANO_LIMITE 2013 int main(int argc, char *argv[]) { int data_valida; int dia, mes, ano; while (1) { data_valida=1; /* Assume que a data eh valida ate que prove o contrario */ printf ("Digite o DIA: "); scanf ("%d",&dia); printf ("Digite o MES: "); scanf ("%d",&mes); printf ("Digite o ANO: "); scanf ("%d",&ano); printf ("Data digitada: %d/%d/%d\n",dia,mes,ano); if (dia < 1 || dia > 31) { printf("Dia invalido! Digite novamente a data...\n"); data_valida=0; } if (mes < 1 || mes > 12) { printf("Mes invalido! Digite novamente a data...\n"); data_valida=0; } if (ano < 0 || ano > ANO_LIMITE) { printf("Ano invalido! Digite novamente a data...\n"); data_valida=0; } if ( (dia == 31) && ((mes == 2) || (mes == 4) || (mes == 6) || (mes == 9) || (mes == 11)) ) { printf("Dia do mes invalido! Digite novamente a data...\n"); data_valida=0; } if (dia == 30 && mes == 2) { printf("Dia do mes invalido! Digite novamente a data...\n"); data_valida=0; } if (dia == 29 && mes == 2 && ((ano % 4) != 0) ) { if (dia == 29 && mes == 2 && ((ano % 100) == 0) ) { printf("Dia do mes invalido (nao eh ano bissexto)! Digite novamente a data...\n"); data_valida=0; } else if (dia == 29 && mes == 2 && ((ano % 400) != 0) ) { printf("Dia do mes invalido (nao eh ano bissexto)! Digite novamente a data...\n"); data_valida=0; } } if (data_valida) break; /* Se a data continua valida, entao sai do loop de repeticao */ } printf ("\n"); printf ("PARABENS: DATA VALIDA!\n"); printf ("\n"); system("PAUSE"); return 0; }