ep1-6434912.cpp
/********************************************************/
/* Aluno: Daniel Amorim de Oliveira */
/* N?mero USP: 6434912 */
/* Exercic?o-Programa 1 -- Data de Nascimento */
/* MAC115 -- 2008 -- IFUSP, turma 21 -- Prof. Reverbel */
/* Compilador: DevC++ vers?o 4.9.9.2 */
/********************************************************/
#include <stdio.h>
#define false 0
#define true 1
int main()
{
int
diaao, /*dia de hoje, que se manter? sem altera??o*/
mesao, /*mes atual, que se manter? sem altera??o*/
anoao, /*ano atual, que se manter? sem altera??o*/
diaa, /*dia de hoje, que ser? modificado ao decorrer da execu??o*/
mesa, /*mes atual, que ser? modificado ao decorrer da execu??o*/
anoa, /*ano atual, que ser? modificado ao decorrer da execu??o*/
dian, /*dia de nascimento*/
mesn, /*mes de nascimento*/
anon, /*ano de nascimento*/
i, /*variavel para checar se a data est? correta*/
h, /*outra variavel para checar se a data est? correta*/
max_dia, /*numero de dias m?ximo no mes*/
ano_bi, /*numero de anos bissestos entre a data de nascimento e a data atual*/
dia_ano, /*conta os dias passados entre o ano de nascimento e o ano atual*/
dia_mes, /*conta os dias passados entre o m?s de nascimento e o m?s atual*/
dia_dia, /*conta os dias passados entre o dia de nascimento e o dia atual*/
dians, /*copia da vari?vel dian, que ser? usada para a obten??o do dia da semana*/
mesns, /*copia da vari?vel mesn, que ser? usada para a obten??o do dia da semana*/
anons, /*copia da vari?vel anon, que ser? usada para a obten??o do dia da semana*/
ano_bis, /*numero de anos bissestos entre o ano 0 e o ano de nascimento*/
dia_anos, /*conta os dias passados entre o ano 0 e o ano de nascimento*/
dia_mess, /*conta os dias passados entre o m?s 1 e o m?s de nascimento*/
dia_totals; /*numero de dias passados at? a data de nascimento*/
printf("Benvindo ao programa DataNasc\n");
i=false;
h=false;
while (i==false){ /*checar se a data atual digitada est? correta*/
printf("\nDigite o dia de hoje: ");
scanf("%d", &diaao);
if (diaao !=0){
printf("Digite o m?s atual: ");
scanf("%d", &mesao);
printf("Digite o ano atual: ");
scanf("%d", &anoao);
if (mesao==2){
if ((anoao%4==0 && anoao%100 != 0) || (anoao%400==0))
max_dia=29;
else
max_dia=28;
}
else if (mesao==4 || mesao==6 || mesao==9 || mesao==11)
max_dia=30;
else
max_dia=31;
if (mesao >12 || mesao <0 || diaao>max_dia || diaao<0 || anoao<0){
printf("Esta data est? incorreta.\n");
i=false;
}
else {
printf("Esta data est? correta.\n");
i=true;
}
}
else {
printf("\nObrigado por usar os nossos servi?os. Volte sempre!!!\n");
i=true;
h=true;
}
}
while (dian !=0){ /*while 1*/
while (h== false){ /*while 2: checar se a data de nascimento est? correta*/
printf("\nDigite o dia do seu nascimento: ");
scanf("%d", &dian);
if (dian !=0){ /*if 1*/
printf("Digite o m?s do seu nascimento: ");
scanf("%d", &mesn);
printf("Digite o ano do seu nascimento: ");
scanf("%d", &anon);
if (mesn==2){
if ((anon%4==0 && anon%100 != 0) || (anon%400==0))
max_dia=29;
else
max_dia=28;
}
else if (mesn==4 || mesn==6 || mesn==9 || mesn==11)
max_dia=30;
else
max_dia=31;
if (mesn >12 || mesn <0 || dian>max_dia || dian<0 || anon<0){
printf("Esta data est? incorreta.\n");
h=false;
}
else { /*else 1*/
if ((anon>anoao) || (anon==anoao && mesn>mesao) || (anon==anoao && mesn==mesao && dian>=diaao))
printf("A data de nascimento n?o pode ser maior ou igual ? data atual\n");
else { /*else 2*/
/*se as duas datas estiverem corretas, o programa come?a o funcionamento propriamente dito*/
/*calculo de dias vividos*/
printf("Esta data est? correta.\n");
diaa=diaao;
mesa=mesao;
anoa=anoao;
dians=dian;
anons=anon;
mesns=mesn;
/*contagem de dias entre o dia de nascimento e o dia atual*/
dia_dia=0;
if (dian==diaa)
dia_dia = 1;
while (dian != diaa){ /*while 3*/
if (dian<diaa){
while (dian<diaa){
dia_dia++;
dian++;
}
}
else{
if (mesn==2){
if ((anon%4==0 && anon%100 != 0) || (anon%400==0))
max_dia=29;
else
max_dia=28;
}
else if (mesn==4 || mesn==6 || mesn==9 || mesn==11)
max_dia=30;
else
max_dia=31;
while (dian<=max_dia){
dian++;
dia_dia++;
}
dian=0;
mesn++;
}
} /*fim while 3*/
/*printf("\ndias dias%d", dia_dia);*/ /*parte do codigo usado para checagem do programa*/
/*contagem de dias entre o m?s de nascimento e o m?s atual*/
dia_mes=0;
while(mesa!=mesn){ /*while 4*/
if (mesa>mesn){
if (mesn==2){
if ((anon%4==0 && anon%100 != 0) || (anon%400==0))
max_dia=29;
else
max_dia=28;
}
else if (mesn==4 || mesn==6 || mesn==9 || mesn==11)
max_dia=30;
else
max_dia=31;
dia_mes = dia_mes + max_dia;
mesn++;
}
else{
while (mesn<12){
if (mesn==2){
if ((anon%4==0 && anon%100 != 0) || (anon%400==0))
max_dia=29;
else
max_dia=28;
}
else if (mesn==4 || mesn==6 || mesn==9 || mesn==11)
max_dia=30;
else
max_dia=31;
dia_mes = dia_mes + max_dia;
mesn++;
}
mesn=0;
anon++;
}
} /* fim while 4*/
/*printf("\ndias mes %d", dia_mes);*/ /*parte do codigo usado para checagem do programa*/
/*contagem de dias entre o ano de nascimento e o ano atual*/
dia_ano = (anoa-anon)*365;
/*printf("\ndias ano %d", dia_ano);*/ /*parte do codigo usado para checagem do programa*/
/*contagem de anos bissestos entre o ano de nascimento e o ano anterior ao atual*/
ano_bi=0;
while (anon < anoa){
if ((anon%4==0 && anon%100 != 0) || (anon%400==0)){
ano_bi++;
anon++;
}
else
anon++;
}
/*printf("\ndias bissestos %d", ano_bi);*/ /*parte do codigo usado para checagem do programa*/
printf("\nVoc? j? viveu %d dias at? hoje.", ano_bi + dia_ano + dia_mes + dia_dia); /*saida de dias vividos*/
/*obten??o do dia da semana do nascimento*/
/*printf("\ndias dias %d", dians);*/ /*parte do codigo usado para checagem do programa*/
mesa=0;
dia_mess=0;
while(mesa < mesns){ /*while 5: contagem de dias transcorridos desde o mes 1 ate o mes de nascimento*/
mesa++;
if (mesa==1){
max_dia=0;
dia_mess=0;
}
else{
if (mesa==3){
if ((anons%4==0 && anons%100 != 0) || (anons%400==0))
max_dia=29;
else
max_dia=28;
}
else if (mesa==5 || mesa==7 || mesa==10 || mesa==12)
max_dia=30;
else
max_dia=31;
}
dia_mess = dia_mess + max_dia;
} /*fim while 5*/
/*printf("\ndias mes %d", dia_mess);*/ /*parte do codigo usado para checagem do programa*/
/*contagem de dias transcorridos entre o ano 0 e o ano de nascimento*/
dia_anos= anons*365;
/*printf("\ndias ano %d", dia_anos);*/ /*parte do codigo usado para checagem do programa*/
/*contagem de anos bissestos ente o ano 0 e o ano de nascimento*/
anoa=0;
ano_bis=0;
while (anons > anoa){
if ((anoa%4==0 && anoa%100 != 0) || (anoa%400==0)){
if(anoa!=0)
ano_bis++;
anoa++;
}
else
anoa++;
}
/*printf("\ndias bi %d", ano_bis);*/ /*parte do codigo usado para checagem do programa*/
dia_totals = ano_bis + dia_anos + dia_mess + dians;
/*printf("\ndias total %d", dia_totals);*/ /*parte do codigo usado para checagem do programa*/
/*obten??o do dia da semana*/
dia_totals=dia_totals%7;
if (dia_totals==0)
printf("\nVoc? nasceu em um s?bado\n");
else if (dia_totals==1)
printf ("\nVoc? nasceu em um domingo\n");
else if (dia_totals==2)
printf ("\nVoc? nasceu em uma segunda-feira\n");
else if (dia_totals==3)
printf ("\nVoc? nasceu em uma ter?a-feira\n");
else if (dia_totals==4)
printf ("\nVoc? nasceu em uma quarta-feira\n");
else if (dia_totals==5)
printf ("\nVoc? nasceu em uma quinta-feira\n");
else
printf ("\nVoc? nasceu em uma sexta-feira\n");
} /*fim else 2*/
} /*fim else 1*/
} /* fim if 1*/
else {
printf("\nObrigado por usar os nossos servi?os. Volte sempre!!!\n");
h=true;
}
} /*fim while 2*/
} /*fim while 1*/
scanf("%d", &anon);
return 0;
}