Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Recherche du jour de la semaine d'après l'algo de Mike Keith Ven 21 Fév 2014 - 14:38 | |
| Bonjour, tous est dans le titre "Recherche du jour de la semaine d'après l'algo de Mike Keith", J'ai juste besoin que vous vérifiez si je n'ai pas commis d'erreur en retranscrivant algorithme de Mike Keith en SUB pour Panoramic, Car je ne suis pas un matheu. Vous trouverez l’algorithme en commentaire dans le code. - Code:
-
dim js$,jj$,mm$,aaaa$ jj$=21:mm$=02:aaaa$=2014: ' entrez ici la date au format jj/mm/aaaa Retourne_Jour_Semaine(jj$,mm$,aaaa$) ' résultat dans le bandeau de form 0 caption 0,js$ END
Sub Retourne_Jour_Semaine(jour$,moi$,an$) ' d'après l'algorytme de Mike Keith dim_local aaaa%,mm%,jj%,az,ma,rm,jjs,rp jj%=val(jour$):mm%=val(moi$):aaaa%=val(an$) if mm%>=3 az=aaaa%:ma=2 else az=aaaa%-1:ma=0 end_if rp=((int(23*mm%))/9)+jj%+4+aaaa%+(int(az/4))-(int(az/100))+(int(az/400))-ma rm=mod(rp,7):jjs=int(rm) if jjs=0 then js$="Dimanche" if jjs=1 then js$="Lundi" if jjs=2 then js$="Mardi" if jjs=3 then js$="Mercredi" if jjs=4 then js$="Jeudi" if jjs=5 then js$="Vendredi" if jjs=6 then js$="Samedi" End_Sub
' WIKIPEDIA dit:
' Jour de semaine D = { [(23m)/9] + d + 4 + y + [z/4] - [z/100] + [z/400] - 2 (si m >= 3) } mod 7
' Comme Mike Keith est un Mathématicien Américain, D = Day pour Jour ; M = Month pour Mois et Y = Year pour Année ' Pour l'explication de la Division par 100 et par 400, c'est pour savoir si l'année est Bissextile : ' Si Y n'est pas divisible par 4, l'année n'est pas Bissextile. ' Si Y est divisible par 4, l'année est Bissextile sauf si A est divisible par 100 et pas par 400. ' D = Jour de semaine (D = 0 à 6; 0=Dimanche, 1=Lundi, 2=mardi, 3=mercredi 4=jeudi, 5=vendredi, 6 = Samedi) ' [x] signifie le nombre entier résultant de la division, le reste étant ignoré ' m = Mois (m = 1 à 12; 1 = Janvier, 2 = Février, 3 = Mars, ... , 12 = Décembre) m >= 3 signifie m supérieur ou égal à 3 ' d = Jour (d = 1 à 31) ' y = année ' z = y - 1 si m < 3 ' z = y si m >= 3 ' Modulo 7 ou mod 7 = reste de la division par 7
' Exemples : ' 1er cas : m < 3 ' Le 18 janvier 1953 tombait quel jour de la semaine ? ' d = 18, m = 1, y = 1953 et z = y-1 = 1952; d'où : ' D = { [(23x1)/9] + 18 + 4 + 1953 + [1952/4] - [1952/100] + [1952/400] } mod 7 ' D = (2 + 18 + 4 + 1953 + 488 - 19 + 4) mod 7 ' D = 2450 mod 7 = 0 car 2450 = 7 x 350 + 0 ' 18 janvier 1953 = un Dimanche
' 2eme cas : m > 3 ' Le 2 août 1953 tombait quel jour de la semaine ? ' d = 2, m = 8, y = 1953 et z = y = 1953; d'où : ' D = { [(23x8)/9] + 2 + 4 + 1953 + [1953/4] - [1953/100] + [1953/400] - 2 } mod 7 ' D = (20 + 2 + 4 + 1953 + 488 - 19 + 4 - 2) mod 7 ' D = 2450 mod 7 = 0 car 2450 = 7 x 350 + 0 ' 2 août 1953 = un Dimanche
' 3eme cas : m = 3 ' Le 13 mars 1998 tombait quel jour de la semaine ? ' d = 13, m = 3, y = 1998 et z = y = 1998; d'où : ' D = { [(23x3)/9] + 13 + 4 + 1998 + [1998/4] - [1998/100] + [1998/400] - 2 } mod 7 ' D = (7 + 13 + 4 + 1998 + 499 - 19 + 4 - 2) mod 7 ' D = 2504 mod 7 = 5 car 2504 = 7 x 357 + 5 ' 13 mars 1998 = un Vendredi 13 !
Merci de votre participation. | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 21 Fév 2014 - 15:03 | |
| @ Jean Claude, Cela à l' air de fonctionner correctement. J' ai essayé avec plusieurs dates et tout va bien. | |
|
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Recherche du jour de la semaine d'après l'algo de Mike Keith Ven 21 Fév 2014 - 15:10 | |
| salut J'ai testé pour ma date de naissance ça fonctionne C'est bien un dimanche Par contre pour l’année 0027 je doute du jour | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Recherche du jour de la semaine d'après l'algo de Mike Keith Ven 21 Fév 2014 - 15:21 | |
| Merci pour vos réponses, je pense aussi que c'est bon, et toutes les vérif que j'ai faites le sont également.
Le sujet à déjà été traité notamment par Georges et Tengaal, mais c'était avant les sub(s). Bon et bien je vais l'intégrer dans mon code en cours.
A+ | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 21 Fév 2014 - 15:23 | |
| @ Sergeauze, 0027, c' était avant ou après JC ?... | |
|
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Recherche du jour de la semaine d'après l'algo de Mike Keith Ven 21 Fév 2014 - 15:29 | |
| J'ai aussi teste le 31 fevrier apres JC (2015) L'algo ne tient pas compte des cas particuliers, ni des différents calendriers | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Recherche du jour de la semaine d'après l'algo de Mike Keith Ven 21 Fév 2014 - 15:41 | |
| @sergeause, Bonne remarque. Je n'ai pas codé les gardes-fous car c'est fait avant l'utilisation de la Sub. (dans mon code en cours). Il faut effectivement que le programmeur empêche ce bourrin d'utilisateur de faire n'importe quoi. @Ygeronimi, Je suis intéressé par toutes les dates, car s'il y a un avant-JC, il n'y pas encore (Dieu merci !) d'après-JC.
Dernière édition par Jean Claude le Ven 21 Fév 2014 - 21:27, édité 1 fois | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Recherche du jour de la semaine d'après l'algo de Mike Keith Ven 21 Fév 2014 - 21:26 | |
| @Sergeause, Pas la peine de tourner bourrique pour si peu, t'es pas classé dans ces bourrins d'utilisateurs A+ | |
|
Contenu sponsorisé
| Sujet: Re: Recherche du jour de la semaine d'après l'algo de Mike Keith | |
| |
|