Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Programme pour savoir le jour de la semaine
InitiéProg le 01/06/2011 à 21:55
Bonjour , ayant découvert ce site ( très intéréssant) , et étant initié à la programmation , je me demandé si vous pouviez m'aider à faire un programme dans lequel on rentre une date ( Jour , mois , année ) et le programme sort le jour de la semaine de cette date .
Je vous remercie d'avance .

MoonWalk le 02/06/2011 à 20:50
Je pense que c'est impossible... :S
La Ti n'a pas la notion du temps...linkakro le 02/06/2011 à 20:53
Si si c'est possible avec les formules mathématiques qui lient une dâte à un jour de semaine.
Laisse moi le temps de sortir mon tp de spé math ou chercher sur internet.
Après, il ne reste plus qu'à traduire la formule pour une TI.MoonWalk le 02/06/2011 à 21:03
Aussi, j'ai une question. Comment on programme en ASM ? Il existe un logiciel pour celà ?linkakro le 02/06/2011 à 22:01
Code
Prompt J,M,A
M<3->B
{0,3,3,6,1,4,6,2,5,0,3,5
A-1+int((A-B)/4)-int((A-B)/100)+int((A-B)/400)+Ans(M)+J->P
P-7int(P/7->N
If N=0
Disp "DIMANCHE
If N=1
Disp "LUNDI
If N=2
Disp "MARDI
...
######## EDIT: Ce programme donne des résultats exacts dans le calendrier Grégorien.
Sa formule respecte les irrégularités bissextiles du calendrier sans arrondi ni moyenne.
Par ailleurs il ne calcule pas le nombre de jours avant de diviser par 7, mais un nombre plus petit qui a le même reste de division. Donc il peut calculer des choses plus grandes.
Il est seulement limité par la capacité de calcul exact de la calculatrice (14 chiffres dont 1 pouvant arrondir)
- la variable année A<10^14-1.
- le calcul P : au plus environ A-1+0.2425*A+365 < 10^14-1
d'où A < (10^14-365)/1.2425
d'où A < 80*10^12 < 10^14-1
Conclusion : on est seulement limité par les années, de l'ordre de 80*10^12
########
Tu commences l'un des pires hs de ce mois-ci...
Oui il existe des logiciels pour programmer en asm mais je n'ai jamais cherché. Ce sont des compilateurs comme il y en a pour chaque language de bas niveau.
InitiéProg le 03/06/2011 à 07:41
Merci , pour la réponse . Le programme marche à merveille .

Dreaming le 01/05/2012 à 19:22
Désolé de poser une question 1 an après , mais ce serait possible de prendre en compte les années bissextiles ?

sandro le 01/05/2012 à 19:49
regarde le denier code posté, il m'a bien l'air de prendre en compte les années bisextiles.Dreaming le 01/05/2012 à 20:50
sandro a écrit :
regarde le denier code posté, il m'a bien l'air de prendre en compte les années bisextiles.
Hmmm, j'ai testé plusieurs fois ce programme et ce qui me faisait dire qu'il ne prenait pas en compte les années bissextiles est que pour le 29 Février 2012 il trouve le même jour (Mercredi) que pour le 1er Mars 2012
Merci quand même d'avoir répondu a mon post précédent

Dreaming le 01/05/2012 à 21:07
Etant invité , je sais pas s'il est possible d'éditer donc désolé.
Je viens de voir mon erreur qui était dans l'écriture d'une ligne.
Donc ma question était inutile

Merci beaucoup pour ce programme qui va m'être très utile !!!

sandro le 01/05/2012 à 21:20
Je suis pas sur, mais si la date est entre le 1er janvier 1950 et le 31 décembre 2049, alors ceci devrait marcher :
Code
Prompt J,M,A
jed(,101.5,100J+M+.01A) -> D
D-7ent(D/7 -> D
If D=1
Disp "LUNDI
If D=2
Disp "MARDI
...
If D=7
Disp "DIMANCHE
jed( est optenu en faisant [2nde][x^-1][alpha][x^-1]
à noter que l'année doit être du format en 2 chiffres pour cette année-ci, ce serai 12.
Sandro
PS : attention, le programme ne contreol pas la validité des arguments, donc si par example tu met 105 en mois, le programme comptera comme si on était un jour plus tard (J+1)
abdel le 03/05/2012 à 18:06
A quoi sert le prgm?
Je n'ai pas vraiment compris son utilité.
Félicitations pour ceux qui gèrent ce site magnifique.

linkakro le 03/05/2012 à 18:55
Les deux programmes servent à connaître le jour de semaine d'une quelconque dâte donnée en jour, mois et année.
Celui de sandro utilise une fonction spéciale de la calculatrice (dont je ne comprend pas le fonctionnement malgré le manuel). Il ne fonctionne que dans un certain intervalle.
EDIT : jed en français et dbd en anglais
Le mien utilise une formule mathématique qui m'a été présentée en devoir de Terminale. Il fonctionne pour toutes les dâtes du calendrier grégorien.kiki le 07/05/2012 à 14:29
Que signifie le B dans le premier calcul ?

linkakro le 07/05/2012 à 19:59
"M>3->B" stocke le booléen "M>3" dans B, c'est-à-dire 0 pour faux et 1 pour vrai.
Ainsi B=1 si M>3 et B=0 sinon.
Cela permet de réduire la taille du code.
En effet la formule mathématique utilise deux expressions selon le mois de l'année.kiki le 07/05/2012 à 21:34
Ah, d'accord. Merci beaucoup

calcugeek le 11/05/2012 à 08:40
Il n'y a pas une erreur dans ton code sandro?
Citation
Code
jed(,101.5,100J+M+.01A) -> D
la virgule au debut est indiquée par ma calto comme une erreur de syntaxe
de plus il ne m'indique pas le bon jour mais indique toujours un jour de decalage : quand je met la date d'aujourd'hui (vendredi) il me met "jeudi"
sandro le 11/05/2012 à 20:10
pardon pour la virgule, c'est une erreur.
Sinon, tu zes sur d'avoir mis la date d'aujourd'hui? quand je teste avec 11/05/12, j'optient bien vendredi (D=5)
SandroThe K le 11/05/2012 à 20:55
A quoi sert la fonction jed en général ? (finance oui mais encore ? ^^' )sandro le 11/05/2012 à 21:03
a compter le nombre de jours entre 2 dates comprises entre le 1er janvier 1950 er le 31 décembre 2049. Après sauf en finance (crédits par example), ça peut servir en spé maths quand on voit l'arithmétique et que le prof demande un calcul de jours de semaine ou une date (là c'est pour vérifier juste, ou allors un programme qui les teste bêtement toutes).
Bref, c'est une fonction qui ne sert pas trop (sauf peut-être en économie. C'est d'ailleurs la seule que je connaisse du menu finance.
Sandrojovasco le 03/12/2012 à 22:48
Bonjour,
le nombre de jours entre 2 dates, ça sert pour les calculs d'intérêts par exemple
en tous cas je ne connaissais pas la méthode avec la Liste.. faudrait que je cherche d'où ça vient cette méthode...linkakro le 03/12/2012 à 23:39
La liste L1 représente les restes de division euclidienne du nombre de jours dans le mois par 7.linkakro le 10/04/2013 à 21:56
(UP)
Ton programme cause quelques arrondits. Cela est mit en évidence dans son propre sujet.
Pour calculer un écart de dâtes avec les formules des programmes du sujet ici présent, il faut écrire :
Code
For(N,1,2
Prompt J,M,A
M<3->B
{0,3,0,3,2,3,2,3,3,2,3,2 // désormais c'est le reste à 28, pas par division 7
int((A-B)/4)-int((A-B)/100)+int((A-B)/400)+28M+Ans(M)+J->L1(N
If N-2
A->C
End
365(A-C)+L1(2)-L1(1 // cette décomposition a l'avantage de réduire les valeurs
Code
For(N,1,2
Prompt J,M,A
If N-2
Then
J->K
M->L
A->B
End
End
jed(100K+L+.01B,100J+M+.01A
rappel : jed en français et dbd en anglais
Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.