Programme amusant, les éphémérides pour un seul jour ! ========================================================= dt = date utilisateur mo = mois utilisateur an = année utilisateur jl = jour de l'an chjl=chaîne jour de l'an bx = bissextiles lm = longueur des mois nj = nombre de jour parcouru et restant jd = jour début du calcul sm = quantième semaine smt= nombre de semaine dans l'année p = variable intermédiaire du % pc = pourcentage aa = année/100 année à 2 chiffre sc = pour siècle jr = numéro du jour utilisateur chjr=chaîne nom des jour chm=chaîne nom des mois ========================================================= Define éphémérides()= Prgm :Local dt,mo,an,jl,chjl,bx,lm :Local nj,jd,sm,smt,p,pc,aa :Local sc,jr,chjr,chm :©------------------------------ :0→dt:0→mo:0→an:0→jl:0→bx:0→lm :0→nj:0→jd:0→sm:52→smt :0→sc:0→jr:0→p:0→pc:0→aa :setMode(5,2) :©------------------------------ :For i,1,2:Disp "":EndFor :Disp " Éphémérides d'un jour ! " :Disp " touche enter pour continuer" :For i,1,4:Disp "":EndFor :getKey(1) :©--------------------------entrée :For i,1,2:Disp "":EndFor :Request "quelle date voulez-vous :",dt :Request "le numéro du mois :",mo :Request "de quelle année 4 chiffres :",an :For i,1,3:Disp "":EndFor :©----------------ctrôl jour mois année :If dt<1:Goto err :If mo<1 or mo>12:Goto err :If an≤1583 or an>9999:Goto err :If dt>30 Then : If mo=4 or mo=6 or mo=9 or mo=11 : Goto err :EndIf :If dt>31 Then : If mo=1 or mo=3 or mo=5 or mo=7 or mo=8 or mo=10 or mo=12 : Goto err :EndIf :©----------jour de l'an de l'année entrée :floor(((23*1)/(9)))+1+4+an+floor(((an-1)/(4)))-floor(((an-1)/(100)))+floor(((an-1)/(400)))→jl :mod(jl,7)→jl :©-----nom du jours de l'an (pas besoin ici) :If jl=0:"dimanche"→chjl :If jl=1:"lundi"→chjl :If jl=2:"mardi"→chjl :If jl=3:"mercredi"→chjl :If jl=4:"jeudi"→chjl :If jl=5:"vendredi"→chjl :If jl=6:"samedi"→chjl :©--------------- ---année bissextiles :If mod(an,4)=0 and mod(an,100)≠0 or mod(an,400)=0 : 1→bx :©-----------------longueur des mois :{31,28,31,30,31,30,31,31,30,31,30,31}→lm :©-------------------nombre de jours :© boucle jusqu'a mo :If mo>1 Then : sum(lm,1,mo-1)+dt→nj :Else : dt→nj :EndIf :If mo>2:nj+bx→nj :©---------------ajustement jour début :1→jd:0→sm :If jl=1:jd+0→jd:0→sm :If jl=2:jd+6→jd:1→sm :If jl=3:jd+5→jd:1→sm :If jl=4:jd+4→jd:1→sm :If jl=5:jd+3→jd:0→sm :If jl=6:jd+2→jd:0→sm :If jl=0:jd+1→jd:0→sm :©-----------------nombre de semaine :If jl=3 and bx=1:53→smt :If jl=4:53→smt :While jd≤nj : jd+7→jd : sm+1→sm :EndWhile :©--------------------% dans l'année :365+bx-nj→p :abs(p)→p:((p*100)/(365))→pc :round(100-pc,1)→pc :©------------------année à 2 chiffres :((an)/(100))→aa :©-fPart(aa)→af (pas util ici)----------- :©-af*100→année à 2 chiffres (pas util ici)- :©--------------------------siècle :int(aa)→sc :sc+1→sc :©---------------calculs du jour Entrée :If mo<3 Then : floor(((23*mo)/(9)))+dt+4+an+floor(((an-1)/(4)))-floor(((an-1)/(100)))+floor(((an-1)/(400)))→jr :Else : floor(((23*mo)/(9)))+dt+2+an+floor(((an)/(4)))-floor(((an)/(100)))+floor(((an)/(400)))→jr :EndIf :mod(jr,7)→jr :©------------------nom du jour entrée :If jr=0:"dimanche"→chjr :If jr=1:"lundi"→chjr :If jr=2:"mardi"→chjr :If jr=3:"mercredi"→chjr :If jr=4:"jeudi"→chjr :If jr=5:"vendredi"→chjr :If jr=6:"samedi"→chjr :©-----------------nom du mois entrée :© Les mois gardent leur numéro pour le calcul :If mo=1:"janvier"→chm :If mo=2:"février"→chm :If mo=3:"mars"→chm :If mo=4:"avril"→chm :If mo=5:"mai"→chm :If mo=6:"juin"→chm :If mo=7:"juillet"→chm :If mo=8:"août"→chm :If mo=9:"septembre"→chm :If mo=10:"octobre"→chm :If mo=11:"novembre"→chm :If mo=12:"décembre"→chm :©--------------------------affiche :Disp "" :Disp "jour: ",chjr," jour de l'an: ",chjl :Disp "Date: ",dt," année de ",smt,"semaines" :Disp "mois: ",chm," ",mo,"ième mois" :Disp "semaine: ",sm," reste ",smt-sm,"semaines" :Disp "année: ",an," ",sc,"ième siècle" :Disp "jour numéro: ",nj," ",pc,"% de l'année" :Disp "jour restant : ",365+bx-nj," ",100-pc,"% restant" :If bx=1 Then : Disp "cette année est bissextile" :Else :Disp "cette année n'est pas bissextile" :EndIf :getKey(1) :Goto fin :©---------------------------erreur :Lbl err :For i,1,3:Disp "":EndFor :Disp "le",dt,"/",mo,"/",an," !?" :Disp "" :Disp "Désolé cette date n'est pas valide" :For i,1,3:Disp "":EndFor :getKey(1) :©----------------------------Fin :Lbl fin :EndPrgm