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);
other                   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);
other                    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{  
other                                        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*/
                           
other                           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;
}