Pas très dur si on fait ça en décomposant le problème (quelque soit le langage...)
On suppose que la date est décomposée en 3 entiers représentant jour (J) mois (M) et A (Année, sur 4 chiffres pour éviter les soucis en 2100...) et valide.
On fait J := J+1, et on regarde si on a dépassé la fin du mois.
Pour voir ça, on peut se faire un tableau taMois[1..12] = { 31,28,31,30,...31}.
Si M est différent de 2, il suffit de voir si J >taMois[M] : si oui, on a dépassé la fin du mois.
Si M est égal à 2 (saloperie de mois de février :-), il faut voir si on a une année bissextile ou non : une année A est bissextile si elle est divisible par 4, avec des exceptions : les siècles ne sont pas bissextiles sauf si le nombre de siècles est divisible par 4. Ex :
2004 est bissextile, 2005, 2006 et 2007 ne le sont pas.
1900 est un siècle, le nombre des siècles est 19, pas divisible par 4, donc pas bissextile
2000 est un siècle, 20 est divisible par 4, donc 2000 est bissextile.
Donc, pour en revenir à nos moutons, il faut comparer dans le cas de février J à 28 si A non bissextile, et à 29 si A bissextile.
Si J passe la fin de mois, il faut donc faire
J := 1
M := M +1
et il faut vérifier qu'on ne change pas d'année : si M >= 13, ça veut dire qu'on était en décembre et qu'on a changé d'année :
On fait donc M := 1 pour passer en janvier et
A := A+1 pour passer à l'année suivante.
Voilà, c'est pas très difficile, yapuka coder ça en Pascal.
Je te suggère de faire une sous-fonction fnBissextile qui renvoie true ou false et qui prend en paramètre non modifiable en entier (l'année), ça simplifiera la fonction principale.
Pour la fonction principale, tu pourrais faire une fonction qui renvoie true si c'est OK et false si la date passée en paramètre n'est pas valide, et prenant trois paramètres entiers modifiables J, M et A qui serviront à passer la date et à récupérer en sortie la date du lendemain.
Enfin, il pourrait être utile de faire également une sous-fonction fnDateValide qui vérifie que la date passée est correcte (M entre 1 et 12, A != 0, et J correct en fonction du mois et de l'année).
Ah oui, encore un petit truc si tu veux t'amuser, il n'y a pas eu d'année 0, on a commencé à l'année 1 et donc... le lendemain du 31 décembre -1 était le premier janvier 1... sauf que je ne suis pas sur que le calendrier grégorien existât à l'époque :-)
2007-02-07 10:40:45
·
answer #1
·
answered by Jako 7
·
0⤊
0⤋
Et pourquoi ne pas règler tout simplement l'horloge de ton ordi à + 24 h. ?
Essaie !
-
2007-02-07 08:56:27
·
answer #4
·
answered by klode31 5
·
1⤊
1⤋