ep1-6452962.c
/********************************************************/
/* Aluno: Pedro Nalesso Jorge */
/* Numero USP: 6452962 */
/* Exercicio-Programa 1 -- 05/11/1988 */
/* MAC115 -- 2008 -- IFUSP, turma 21 -- Prof. Reverbel */
/* Compilador: DevC++ versao 4.9.9.2 */
/********************************************************/
#include <stdio.h>
int main ()
{
int dia_hoje, mes_hoje, ano_hoje, dia, mes, ano, max_dia, max_dia_hoje=0, n=0, dias, contador=0, ano_hoje2;
printf("Bem vindo ao programa DataNasc!\n");
while(n==0){ /*loop ate a data estar correta*/
printf("Digite o dia de hoje:\n");
scanf("%d",&dia_hoje);
printf("Digite o mes atual:\n");
scanf("%d",&mes_hoje);
printf("Digite o ano atual:\n");
scanf("%d",&ano_hoje);
if(dia_hoje<=0||dia_hoje>31||mes_hoje<=0||mes_hoje>12||ano_hoje<0){
printf("Esta data esta incorreta!\n");
}
else{
if(mes_hoje==4||mes_hoje==6||mes_hoje==9||mes_hoje==11){
max_dia_hoje=30;
}
else{
max_dia_hoje=31;
}
if(mes_hoje==2){
if((ano_hoje%4==0&&ano_hoje%100!=0)||(ano_hoje%400==0)){
max_dia_hoje=29;
}
else{
max_dia_hoje=28;
}
}
if(dia_hoje>max_dia_hoje){
printf("Esta data esta incorreta!\n");
}
if(dia_hoje>0&&dia_hoje<=max_dia_hoje&&mes_hoje>0&&mes_hoje<=12&&ano_hoje>0){
printf("Esta data esta correta!\n");
n++;
}
}
} /*saiu do loop, data de hoje correta*/
while(n==1){
printf("Digite o dia do seu nascimento:\n");
scanf("%d",&dia);
if(dia==0){
printf("Obrigado por usar os nossos servicos. Volte sempre!");
n++;
}
else{
printf("Digite o mes do seu nascimento:\n");
scanf("%d",&mes);
printf("Digite o ano do seu nascimento:\n");
scanf("%d",&ano);
if(dia<=0||dia>31||mes<=0||mes>12||ano<0){
printf("Esta data esta incorreta!\n");
}
else{
if(mes==4||mes==6||mes==9||mes==11){
max_dia=30;
}
else{
max_dia=31;
}
if(mes_hoje==2){
if((ano%4==0&&ano%100!=0)||(ano%400==0)){
max_dia=29;
}
else{
max_dia=28;
}
}
if(max_dia<dia){
printf("Esta data esta incorreta!\n");
}
if(dia>0&&dia<=31&&mes>0&&mes<=12&&ano>0&&dia<=max_dia){
ano_hoje2=ano_hoje;
dias=(ano_hoje-ano)*365-365; /*contagem de dias de anos inteiros*/
while(ano_hoje2>ano){
if((ano_hoje2%4==0&&ano_hoje2%100!=0)||(ano_hoje2%400==0)){ /*contagem de anos bissextos entre os anos*/
contador++;
}
ano_hoje2--;
}
if(ano_hoje==ano&&mes<2&&mes_hoje>=3&&((ano_hoje%4==0&&ano_hoje%100!=0)||(ano_hoje%400==0))){ /*condicao para mesmo ano, sendo bissexto*/
contador++;
}
if(ano_hoje==ano){
dias=0; /* por causa da formula de dias*/
}
if(dias<0){
printf("Esta data esta incorreta!\n");
}
if(dias>=0){
dias=dias+contador+dia_hoje;
if(mes==1){
dias=max_dia-dia_hoje+1;
}
if(mes==2){
dias=dias+31;
}
if(mes==3){
dias=dias+31+28;
}
if(mes==4){
dias=dias+31+28+31;
}
if(mes==5){
dias=dias+31+28+31+30;
}
if(mes==6){
dias=dias+31+28+31+30+31;
}
if(mes==7){
dias=dias+31+28+31+30+31+30;
}
if(mes==8){
dias=dias+31+28+31+30+31+30+31;
}
if(mes==9){
dias=dias+31+28+31+30+31+30+31+31;
}
if(mes==10){
dias=dias+31+28+31+30+31+30+31+31+30;
}
if(mes==11){
dias=dias+31+28+31+30+31+30+31+31+30+31;
}
if(mes==12){
dias=dias+31+28+31+30+31+30+31+31+30+31+30;
}
if(mes_hoje==1){
dias=dias+dia_hoje+31+30+31+30+31+31+30+31+30+31+28;
}
if(mes_hoje==2){
dias=dias+dia_hoje+31+30+31+30+31+31+30+31+30+31;
}
if(mes_hoje==3){
dias=dias+dia_hoje+31+30+31+30+31+31+30+31+30;
}
if(mes_hoje==4){
dias=dias+dia_hoje+31+30+31+30+31+31+30+31;
}
if(mes_hoje==5){
dias=dias+dia_hoje+31+30+31+30+31+31+30;
}
if(mes_hoje==6){
dias=dias+dia_hoje+31+30+31+30+31+31;
}
if(mes_hoje==7){
dias=dias+dia_hoje+31+30+31+30+31;
}
if(mes_hoje==8){
dias=dias+dia_hoje+31+30+31+30;
}
if(mes_hoje==9){
dias=dias+dia_hoje+31+30+31;
}
if(mes_hoje==10){
dias=dias+dia_hoje+31+30;
}
if(mes_hoje==11){
dias=dias+dia_hoje+31;
}
if(mes_hoje==12){
dias=dias+dia_hoje;
}
if((ano_hoje%4==0&&ano_hoje%100!=0)||(ano_hoje%400==0)){
if(mes_hoje>=3||(mes_hoje==2&&dia_hoje==29)){
dias++; /*ano bissexto*/
}
}
printf("Parabens! Voce nasceu em um dia da semana, que eu ainda nao sei, e viveu %d dias ate hoje!\n",dias);
}
}
}/*segundo else*/
}/*primeiro else*/
}/*saiu do loop, data do aniversario correta*/
return 0;
}