#include <stdio.h>
//-------------------------------------------------------------------------------------
int bis(int annee)
{
return annee % 4 != 0 ? 0 : annee % 100 != 0 ? 1 : annee % 400 != 0 ? 0 : 1;
}
//-------------------------------------------------------------------------------------
int quantieme_en_date(int quantieme, int annee, int *jour, int *mois)
{
int m, jour_par_mois[] = {31, 28 + bis(annee), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(quantieme >= 1 && quantieme <= (365 + bis(annee)))
{
for(m = 0; m < 12; m++)
{
if(quantieme <= jour_par_mois[m])
{
*jour = quantieme;
*mois = m + 1;
break;
}
else
quantieme -= jour_par_mois[m];
}
return 1;
}
return 0;
}
//-------------------------------------------------------------------------------------
int main(void)
{
int jour, mois, quantieme 190, annee 2012;
if(quantieme_en_date(quantieme, annee, &jour, &mois))
printf("Quantieme %03d de l'annee %d : %02d/%02d/%d\n", quantieme, annee, jour, mois, annee);
else
puts("Echec !");
return 0;
}
Résultat
Quantieme 190 de l'annee 2010 : 09/07/2010
Quantieme 190 de l'annee 2012 : 08/07/2012