Autorisation : Membre
Nb de messages : 3
Inscrit le : Dim 31 Déc 2017, 16:51
Posté le : Dim 31 Déc 2017, 16:52
Bonjour, j'ai reçus un devoir maison a faire qui consiste à un faire un programme qui donne le jour correspondant à la date qu'on donne : Voici le programme :
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
[...]
Pourriez vous me donner l'explication des 5 premières lignes si possible ? Merci d'avance.
Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 22 Avr 2017, 16:00
Posté le : Lun 01 Jan 2018, 17:50
Salut salut.
Alors la première ligne :
Code
Prompt J,M,A
On demande trois valeurs à l'utilisateurs, soit le jour, le mois et l'année.
La deuxième ligne :
Code
M<3->B
Ici c'est une sorte de true ou false, si M est inférieur à 3 alors B aura comme valeur 1, sinon il aura 0
La troisième :
Code
{0,3,3,6,1,4,6,2,5,0,3,5
C'est une liste. Ici pas besoin de l'attribuer à une variable, car rien dans cette liste ne va être modifié. Pour avoir accès au valeurs contenue dedans,on utilisera Rép(Indice)
C'est une opération qui va nous donner le nombre de jour entre le 1er Janvier 0 et la date entrée en paramètre. si tu demande quel jour on était le 3 Janvier de l'an 0, P va être égal à 3.
La cinquième :
Code
P-7int(P/7->N
C'est l'opération modulo, il va te donner un résultat entre 0 et 6, exemple, si t'as P=23 donc si le jour que t'as demandé c'est le 23 ème, il va te retourner 2, et donc grâce à ce chiffre, on pourra dire quel jour de la semaine c'était.
J'espère avoir bien expliqué, si t'as une question hésite pas
Autorisation : Membre
Nb de messages : 3
Inscrit le : Dim 31 Déc 2017, 16:51
Posté le : Lun 01 Jan 2018, 19:37
Bonsoir, tout d'abord merci de votre réponse qui est très claire et qui m'aide beaucoup, il y a juste une chose que je n'arrive pas à déchiffrer : à quoi correspondent ces chiffres ? :
Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Mer 03 Jan 2018, 12:32
Hey !
Citer
C'est une opération qui va nous donner le nombre de jour entre le 1er Janvier 0 et la date entrée en paramètre. si tu demande quel jour on était le 3 Janvier de l'an 0, P va être égal à 3.
Cette affirmation est fausse.
En effet, quand tu vois comment le mois (M) est utilisé, tu te rends compte (outre la gestion du 29 février avec les A-B) qu'on ajoute un nombre qui est dans cette liste {0,3,3,6,1,4,6,2,5,0,3,5}.
Ce que cette ligne te retourne réellement, c'est un entier tel qu'il soit congru au jour de la semaine modulo 7.
La partie A-1 sert donc à gérer le décalage selon l'année (on décale d'un jour par an puisque 365 est congru à 1 modulo 7 (ie pour une année normale, si le JJ/MM/AAAA est un Mardi, alors le JJ/MM/AAAA+1 est un Mercredi.
Le int((A-B)/4)-int((A-B)/100)+int((A-B)/400) permet de rajouter le nombre d'années bissextiles qu'il y a eut (à chaque fois on rajoute un décalage de 1).
Et enfin le Ans(M) permet de rajouter le décalage du mois (si le 1er Janvier est un Lundi, alors le 1er Février sera un Jeudi, d'où le 3 dans le mois de Février (indice 2)). Si c'est plus clair pour toi, il est équivalent de mettre {0, 31, 31+28, 31+28+31, ...
Pour finir, il faut bien sûr rajouter le nombre de jours écoulés depuis le début du mois.
Autorisation : Membre
Nb de messages : 3
Inscrit le : Dim 31 Déc 2017, 16:51
Posté le : Ven 05 Jan 2018, 19:09
Bonsoir, merci de votre réponse, donc si j'ai bien compris :
Code
{0,3,3,6,1,4,6,2,5,0,3,5}
ce code signifie que le premier chiffre est 0, le second est 10 pareil pour le troisième, le quatrième c'est 13 etc... mais donc a quoi correspondent ces chiffres ?