Solução: C: Problema da idade em dias (Antonio Lucas)

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
//time 1:12:49
 
int main(int argc, char *argv[])
{
 
  time_t agora_t = time(NULL);
  struct tm *agora = localtime(&agora_t);
  int dia = agora->tm_yday ;
  int mes = agora->tm_mon + 1;
  int ano = agora->tm_year + 1900;
 
  int MESES[] = {31,28,31,30,31,30,31,31,30,31,30,31} ;
 
  int diaNasc,mesNasc,anoNasc;
  int i,aux =0,bis = 0;
  int res = 0;
  scanf("%d", &diaNasc);
  scanf("%d", &mesNasc);
  scanf("%d", &anoNasc);
 
 
  for (i = anoNasc; i < ano; i++){
    if (i%4 == 0){
      if (i%100 != 0)
        bis++;
      else
        if (i%400 == 0) bis++;
    }
  }
  if (anoNasc%4 == 0 && mesNasc > 2) bis--;
 
 
  for(i=mesNasc-1;i<12;i++){
    aux+=MESES[i];
  }
  aux -=diaNasc-1;
 
  res = aux + (ano-anoNasc-1)*365 + bis + dia;
 
 
 
  printf("%d\n", res); 
  return 0;
}