#include <stdio.h>

struct data {
  int dia, mes, ano;
};

int bissexto(struct data d) {
  // verifica as condicoes para ano bissexto
  if ((d.ano%4 == 0) && (d.ano%100 != 0) || (d.ano%400 == 0))
    return 1;
  else  // se nao for bissexto
    return 0;

}
  
int dias_decorridos(struct data d1, struct data d2) {
  int i;
  struct data atual;
  int dias;
  
  // o vetor abaixo contem os dias do mes correspondente. Repare
  // que a primeira posicao contem o valor 0, so para manter uma
  // relacao entre o numero do mes e a posicao no vetor. Pode-se
  // perceber que:  dias_do_mes[1]=31, dias_do_mes[4]=30, ...
  // Como nao existe mes 0, nao preciso me importar com
  // dias_do_mes[0]
  int dias_do_mes[13] = {00,31,28,31,30,31,30,31,31,30,31,30,31};
 
  dias =0;
  // verifica se a data d2 e posterior a data d1
  if ((d2.ano > d1.ano) || (d2.ano==d1.ano)&&(d2.mes > d1.mes) ||
     (d2.ano==d1.ano)&&(d2.mes==d1.mes)&&(d2.dia>d1.dia)) {

     atual = d1;
     // ajuste do numero de dias do mes de fevereiro
     if (bissexto(atual))
       dias_do_mes[2] = 29;
       
     while (atual.dia!=d2.dia || atual.mes != d2.mes || atual.ano != d2.ano ) {
       dias ++;
       atual.dia++;
       if (atual.dia>dias_do_mes[atual.mes]) {
         atual.dia = 1;
	 atual.mes++;
       }
       if (atual.mes>12) {
         atual.mes = 1;
	 atual.ano ++;
	 // ajuste do numero de dias do mes de fevereiro
	 if (bissexto(atual))
	   dias_do_mes[2] = 29;
	 else
	   dias_do_mes[2] = 28;
       }
     }
  }
  else  // se d2 nao for posterior a d1
    printf ("A segunda data deve ser posterior a primeira!\n");
    
  return dias;
}

main () {
  struct data d1, d2;
  
  printf ("Digite uma data no formato dd/mm/aaaa: ");
  scanf ("%d / %d / %d",&d1.dia,&d1.mes,&d1.ano);
  if (bissexto(d1))
    printf ("%d e ano bissexto\n",d1.ano);
  else
    printf ("%d nao e ano bissexto\n",d1.ano);

  printf ("Digite outra data: ");
  scanf ("%d / %d / %d",&d2.dia,&d2.mes,&d2.ano);

  printf ("Dias decorridos entre %d/%d/%d e %d/%d/%d: %d\n",d1.dia,d1.mes,
          d1.ano,d2.dia,d2.mes,d2.ano,dias_decorridos(d1,d2));
}
