/* ------------------------------------------------------------------------- ** pr1gab.c - implementacao da pr1 do curso de Programacao II. ** ** Para poder compilar este codigo, sera necessaria a inclusao da biblioteca ** libpr1, que foi gerada para Linux. Caso alguem tenha interesse entrar em ** contato comigo. ** ------------------------------------------------------------------------- ** ** Criado: 05-Abr-2001 Marcio Santi ** ** Modificado: ** ** ------------------------------------------------------------------------- */ #include #include "pr1lib.h" /* ------------------------------------------------------------------------- ** Funcoes locais: */ int ValData(int dia, int mes, int ano); int MaxDia (int mes, int ano); /* =============================== ValData ============================== */ int ValData(int dia, int mes, int ano) // 1.5 ptos { /* O mes deve estar entre 1 e 12. */ if (mes < 1 || mes > 12) return(0); /* O dia deve estar entre 1 e maxdia (28/29/30/31). */ if (dia < 1 || dia > MaxDia(mes, ano)) return(0); return(1); } /* =============================== MaxDia =============================== */ int MaxDia(int mes, int ano) // 1.5 ptos { /* Os meses de abril, junho, setembro e novembro tem 30 dias. */ if (mes == 4 || mes == 6 || mes == 9 || mes == 11) return(30); /* O mes de fevereiro tem 28 ou 29 dias. */ if (mes == 2) { if (pr_bisexto(ano)) return(29); return(28); } /* Os demais meses tem 31 dias. */ return(31); } /* ============================== readdata ============================== */ int readdata(int *d, int *m) // 2.0 ptos { int Ano; pr_ano(&Ano); scanf("%d/%d", d, m); if(ValData(*d,*m,Ano)) return 1; return 0; } /* =========================== main function ============================ */ main() // 3.0 ptos { int d, m, Ano; int md, mm; int fat, hfat; int delta, menor_delta = 366; pr_dia(&d); pr_mes(&m); pr_ano(&Ano); hfat = pr_fator(d,m,Ano); while(1) // ate ler uma data invalida. { do { printf("Aniversario:\t"); } while(!readdata(&d,&m)); fat = pr_fator(d,m,Ano); delta = fat-hfat; if(delta < 0 ) continue; if(delta == 0) break; if(delta