Bonjour,
"Dans le plan muni d'un repère d'origine O, un point M se déplace sur le quadrillage ci dessous. Au départ, il se trouve en O, puis il se déplace d'un pas (c'est-à-dire d'une unité) dans l'une des quatre directions (droite, gauche, haut, bas). Les déplacements sont aléatoires. Le point M s'arrête lorsqu'il atteint le bord du quadrillage et la variable aléatoire K donne le nombre de pas effectués. Écrire un algorithme qui simule le déplacement aléatoire du point M et affiche la valeur prise par la variable aléatoire K."
J'ai remarqué que si le point M avait pour abscisse -4 ou 5 ou bien pour ordonné -4 ou 4, l'algorithme devait s'arrêter.
Pour une raison que j'ignore ça ne marche pas, j'ai testé deux algorithmes différents et le résultat est le même.
Je vais poster mes deux différents algorithmes sous celui-ci pour que le contenu reste lisible.
A des fins de précisions, j'attribue à la variable S un nombre aléatoire entier entre 1 et 4.
1 correspond à la situation à "déplacement du point M vers la droite"; 2 "déplacement du point M vers la gauche"; 3"déplacement du point M vers le haut"; 4"déplacement du point M vers le bas".
Merci!
1 FONCTIONS_UTILISEES
2 VARIABLES
3 X EST_DU_TYPE NOMBRE
4 Y EST_DU_TYPE NOMBRE
5 K EST_DU_TYPE NOMBRE
6 S EST_DU_TYPE NOMBRE
7 DEBUT_ALGORITHME
8 X PREND_LA_VALEUR 0
9 Y PREND_LA_VALEUR 0
10 K PREND_LA_VALEUR 0
11 TANT_QUE (-3<=X<=4 OU -3<=Y<=3) FAIRE
12 DEBUT_TANT_QUE
13 K PREND_LA_VALEUR K+1
14 S PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,4)
15 SI (S=1) ALORS
16 DEBUT_SI
17 X PREND_LA_VALEUR X+1
18 FIN_SI
19 SI (S=2) ALORS
20 DEBUT_SI
21 X PREND_LA_VALEUR X-1
22 FIN_SI
23 SI (S=3) ALORS
24 DEBUT_SI
25 Y PREND_LA_VALEUR Y+1
26 FIN_SI
27 SI (S=4) ALORS
28 DEBUT_SI
29 Y PREND_LA_VALEUR Y-1
30 FIN_SI
31 FIN_TANT_QUE
32 AFFICHER X
33 AFFICHER Y
34 AFFICHER K
35 FIN_ALGORITHME
1 FONCTIONS_UTILISEES
2 VARIABLES
3 X EST_DU_TYPE NOMBRE
4 Y EST_DU_TYPE NOMBRE
5 K EST_DU_TYPE NOMBRE
6 S EST_DU_TYPE NOMBRE
7 DEBUT_ALGORITHME
8 X PREND_LA_VALEUR 0
9 Y PREND_LA_VALEUR 0
10 K PREND_LA_VALEUR 0
11 TANT_QUE (-3<=X<=4 OU -3<=Y<=3) FAIRE
12 DEBUT_TANT_QUE
13 K PREND_LA_VALEUR K+1
14 S PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,4)
15 SI (S=1) ALORS
16 DEBUT_SI
17 X PREND_LA_VALEUR X+1
18 FIN_SI
19 SINON
20 DEBUT_SINON
21 SI (S=2) ALORS
22 DEBUT_SI
23 X PREND_LA_VALEUR X-1
24 FIN_SI
25 SINON
26 DEBUT_SINON
27 SI (S=3) ALORS
28 DEBUT_SI
29 Y PREND_LA_VALEUR Y+1
30 FIN_SI
31 SINON
32 DEBUT_SINON
33 SI (S=4) ALORS
34 DEBUT_SI
35 Y PREND_LA_VALEUR Y-1
36 FIN_SI
37 FIN_SINON
38 FIN_SINON
39 FIN_SINON
40 FIN_TANT_QUE
41 AFFICHER X
42 AFFICHER Y
43 AFFICHER K
44 FIN_ALGORITHME
J'oubliais: tout d'abord lorsque je lance ces algorithmes on m'indique une erreur car le nombre de boucles serait trop éleve, or lorsque j'active le mode pas à pas, je constate que peu importe la valeur attribué aléatoirement à S, l'algorithme considère toujours que la condition (S=1) est vérifié même si par exemple S=2. Et la boucle devrait donc s'arrêter tout de même lorsque X=5 mais c'est pareil l'algorithme ne le prend pas du tout en considération et continue donc la boucle. Et je précise qu'il est pourtant bien indiqué que la X a la valeur 5 à ce moment précis.
Désolé pour ce post extrêmement long!
salut
moi je m'embêterai pas avec tout ces si ... sinon ... et écrirai simplement :
bonjour,
en l'absence de Carpediem :
ton algo posté le 25 à 9:03 est construit comme celui de Carpediem.
Tu dis que ça ne fonctionne pas : pourquoi ? qu'obtiens tu comme résultat ?
Lorsque je lance le mode pas à pas, peu importe la valeur attribuée à S, la condition S=1 est toujours considérée comme vérifiée. Dès lors, X prend toujours la valeur X+1. Et au-delà de ça alors même que cet algorithme est censé s'arrêter lorsque X=5, il ne s'arrête pas. Donc à chaque fois que je le lance, j'ai un message disant que l'algorithme cesse de fonctionner pour éviter une répétition à l'infini.
J'ai même soumis ces algorithmes à ChatGPT pour qu'il y décèle une erreur et il n'en voit non plus. Je ne vois vraiment pas comment faire du coup.
je l'ai écrit comme ceci (en placant l'origine en bas à gauche, M démarre en (4;4)
FONCTIONS_UTILISEES
VARIABLES
K EST_DU_TYPE NOMBRE
X EST_DU_TYPE NOMBRE
Y EST_DU_TYPE NOMBRE
S EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
K PREND_LA_VALEUR 0
X PREND_LA_VALEUR 4
Y PREND_LA_VALEUR 4
TANT_QUE ((X>0 ET X<9) ET (Y>0 ET Y<9)) FAIRE
DEBUT_TANT_QUE
S PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,4)
SI (S==1) ALORS
DEBUT_SI
X PREND_LA_VALEUR X+1
FIN_SI
SI (S==2) ALORS
DEBUT_SI
X PREND_LA_VALEUR X-1
FIN_SI
SI (S==3) ALORS
DEBUT_SI
Y PREND_LA_VALEUR Y+1
FIN_SI
SI (S==4) ALORS
DEBUT_SI
Y PREND_LA_VALEUR Y-1
FIN_SI
K PREND_LA_VALEUR K+1
FIN_TANT_QUE
AFFICHER* K
AFFICHER* X
AFFICHER* Y
FIN_ALGORITHME
et ça fonctionne..
de plus, la condition du tant que : (x valide OU y valide) ne va pas.
Tu continues à te déplacer si X valide ET y valide.
C'est pour ça que ton algo ne s'arrête pas.
Merci beaucoup pour votre message mon erreur se situait sur SI (S==1) ALORS que j'avais écrit SI (S=1) ALORS.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :