1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| #include <stdio.h>
struct struct_date
{
int jour;
int mois;
int annee;
};
int Trouve_jour_dernier_dimanche(struct struct_date date)
{
int annee, mois, jour, siecle,b;
mois=date.mois-2;
annee=date.annee;
if (mois<1)
{
mois+=12;
annee--;
}
siecle=annee/100;
annee-=siecle*100;
b=(int)(2.6*mois-0.19)+31+annee+annee/4+siecle/4-siecle*2;
jour=(double)((double)b/7.0-b/7)*7.0+0.1;
return 31-jour;
}
void Trouve_date_precedent_changement_heure(struct struct_date date_courante, struct struct_date *precedente_date)
{
int dernier_dimanche;
if (date_courante.mois==3 || date_courante.mois==10)
{
dernier_dimanche=Trouve_jour_dernier_dimanche(date_courante);
if (dernier_dimanche<=date_courante.jour)
{
precedente_date->jour=dernier_dimanche;
precedente_date->mois=date_courante.mois;
precedente_date->annee=date_courante.annee;
return;
} else
{
if (date_courante.mois==10) date_courante.mois=3;
else
{
date_courante.mois=10;
date_courante.annee--;
}
}
}
if (date_courante.mois<3)
{
date_courante.mois=10;
date_courante.annee--;
}
if (date_courante.mois>10) date_courante.mois=10;
if (date_courante.mois>3 && date_courante.mois<10) date_courante.mois=3;
precedente_date->jour=Trouve_jour_dernier_dimanche(date_courante);
precedente_date->mois=date_courante.mois;
precedente_date->annee=date_courante.annee;
}
void Trouve_date_prochain_changement_heure(struct struct_date date_courante, struct struct_date *prochaine_date)
{
int dernier_dimanche;
if (date_courante.mois==3 || date_courante.mois==10)
{
dernier_dimanche=Trouve_jour_dernier_dimanche(date_courante);
if (dernier_dimanche>date_courante.jour)
{
prochaine_date->jour=dernier_dimanche;
prochaine_date->mois=date_courante.mois;
prochaine_date->annee=date_courante.annee;
return;
} else
{
if (date_courante.mois==10)
{
date_courante.mois=3;
date_courante.annee++;
}
else date_courante.mois=10;
}
}
if (date_courante.mois<3) date_courante.mois=3;
if (date_courante.mois>10)
{
date_courante.mois=3;
date_courante.annee++;
}
if (date_courante.mois>3 && date_courante.mois<10) date_courante.mois=10;
prochaine_date->jour=Trouve_jour_dernier_dimanche(date_courante);
prochaine_date->mois=date_courante.mois;
prochaine_date->annee=date_courante.annee;
}
int main()
{
struct struct_date date_actuelle, date_precedent_changement_heure, date_prochain_changement_heure;
// Valeurs à modifier :
date_actuelle.jour=1;
date_actuelle.mois=12;
date_actuelle.annee=2008;
Trouve_date_precedent_changement_heure(date_actuelle,&date_precedent_changement_heure);
Trouve_date_prochain_changement_heure(date_actuelle,&date_prochain_changement_heure);
printf("Nous sommes le %d/%d/%d\n",date_actuelle.jour, date_actuelle.mois, date_actuelle.annee);
printf("Le precedent changement d'heure s'est produit le : %d/%d/%d\n", date_precedent_changement_heure.jour, date_precedent_changement_heure.mois, date_precedent_changement_heure.annee);
printf("Le prochain changement d'heure se produira le : %d/%d/%d\n", date_prochain_changement_heure.jour, date_prochain_changement_heure.mois, date_prochain_changement_heure.annee);
getchar();
return 0;
} |
Partager