Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

Bloqué sur un algorithme

Posté par
princeleking
06-12-17 à 14:02

Bonjour à tous,
J'ai un DM de math à faire et je bloque pour un algo.
Voici l'énoncé :
Un robot doit atteindre une cible situe devant lui à 20 pas
Le robot fait soit un pas en diagonal à droite soit à gauche

On nous donne un algorithme pour obtenir la marche du robot
X est un nombre
G est un nombre
I est un nombre
Y est un nombre

Début

G prend valeur 0
Y prend valeur 0
Tracer point (0;0)
Pour I allant de 1 a 20
X prend valeur algobox aléa ent (0,1)
Si X=0
Alors
G prend valeur G+1
Y prend valeur Y+1
Sinon
Y prend valeur Y-1
Fin sinon
Tracer point (I,Y)
Fin pour
Afficher G
Fin

Les questions:
Expliquer le rôle de la variable
G--> nombre de pas a gauche
X--> choisir aléatoirement entre pas à gauche ou à droite
y --> position du robot par rapport a la cible

Et après je bloque

Compléter ce algo  pour qu'il affiche la fréquence de cibles atteintes sur N marches exécuté par le robot
Exécuter pour N=100 etc

Je ne sait comment faire car a chaque fois que je fait des modifications dans l algo j ai erreur ou 0
Ce que j'ai compris c'est que le robot atteint la cible lorsqu'il fait 10/20 pas vers la gauche

Merci

Posté par
Glapion Moderateur
re : Bloqué sur un algorithme 06-12-17 à 14:23

Bonjour, tu veux la la fréquence de cibles atteintes sur N marches exécutées donc il faut que tu simules N fois la marche du robot et que tu comptes le nombre de fois où la cible a été atteinte.
Comment simuler N fois la marche du robot ? : en encadrant le tout par une nouvelle boucle Pour J allant de 1 à N (après avoir demandé la valeur de N)
Pour savoir si la marche a été un succès, mettre un test SI Y == 0 Alors incrémenter une variable Z par exemple (une nouvelle, qui compte le nombre de succès)
et à la fin afficher Z/N qui sera donc la fréquence demandée.

Posté par
princeleking
re : Bloqué sur un algorithme 06-12-17 à 14:24

J'ai oublié d'écrire les modifications que j'avais apporté à l'algo
voila j'avais rajouter "Saisir N" au début et Une boucle "Pour k allant de 1 à N"
et rajouté à la fin : " If G/20=1/2 Then F (une variable ajouté au  début pour compter le nombre de fois que le robot atteint la cible ) prend la valeur F+1"
Afficher F et F/N pour avoir la fréquence

Posté par
DarwinMath
re : Bloqué sur un algorithme 06-12-17 à 14:25

Bonjour,

Si tu prends un axe habituel, je dirais que quand Y augmente (Y prend la valeur Y+1), alors tu fais un pas vers la droite et non la gauche.
Et donc G est un compteur qui représente le nb de pas vers la droite.

X vaut soit 0 soit 1.
Qd X vaut 0 : on fait un pas en diagonal vers la droite
Qd X vaut 1 : on fait un pas en diagonal vers la gauche

Y représente la position du robot par rapport à l'axe vertical de la cible.
Y > 0 si le robot est décalé sur la droite ; il a fait plus de pas vers la droite que vers la gauche
Y < 0 si le robot est décalé sur la gauche ; il a fait plus de pas vers la gauche que vers la droite
Y = 0 si le robot est dans l'axe de la cible (l'axe est la droite reliant sa position de départ et la cible).

Qu'en penses-tu ?

Posté par
princeleking
re : Bloqué sur un algorithme 06-12-17 à 14:26

Euh j'ai compris le début mais à pas après

Glapion @ 06-12-2017 à 14:23


Pour savoir si la marche a été un succès, mettre un test  SI Y == 0 Alors incrémenter une variable Z par exemple (une nouvelle, qui compte le nombre de succès)
et à la fin afficher  Z/N qui sera donc la fréquence demandée.

Posté par
Glapion Moderateur
re : Bloqué sur un algorithme 06-12-17 à 14:29

remplace plutôt If G/20=1/2 par if Y = 0
en fait G ne te sert pas à grand chose.
sinon oui tes idées étaient bonnes ton algorithme devrait marcher.
Attention à la syntaxe algobox (c'est pas if c'est SI et les tests d'égalité se font avec == et pas =)

Posté par
princeleking
re : Bloqué sur un algorithme 06-12-17 à 14:29

Mais DarwinMath
G c'est un pas à gauche puisque si X=0 alors G augment de 1 et y aussi et y c'est l'ordonné c'est comme si le robot va vers le haut et c'est la Gauche

Posté par
Glapion Moderateur
re : Bloqué sur un algorithme 06-12-17 à 14:31

Citation :
Euh j'ai compris le début mais à pas après

c'est pourtant ce que tu as fait dans ton post de 14:24 donc tu es sur la bonne route.
Poste ton algorithme final tel que tu le saisis dans algobox (en mode text c'est plus facile).

Posté par
princeleking
re : Bloqué sur un algorithme 06-12-17 à 14:31

ok Glapion j'essaie ça et je vous dit si j'arrive ( Je le programme sur ma calculatrice)

Posté par
princeleking
re : Bloqué sur un algorithme 06-12-17 à 14:59

Euh je n'arrive pas à chaque fois que j'exécute mon algo ça me met "Done"
Le voici:
0 -> C (compteur de cible atteinte)
Prompt N
0->G
0->Y
For(K,1,N)
For(I,1,20)
entAléat(0,1)->X
if X=0
Then
G+1->G
Y+1->Y
Else
Y-1->Y
If Y=0
Then
C+1->C
Disp C,C/N
End

j'ai enlevé la partie "tracer le point"

Posté par
Glapion Moderateur
re : Bloqué sur un algorithme 06-12-17 à 15:11

tu dois remettre Y (et éventuellement G mais G ne sert à rien) à 0 à chaque nouvelle épreuve, c.a.d après la boucle For(K,1,N) mais avant For(I,1,20)

Posté par
princeleking
re : Bloqué sur un algorithme 06-12-17 à 15:20

euh désolé je n'ai pas très bien compris

Posté par
Glapion Moderateur
re : Bloqué sur un algorithme 06-12-17 à 15:55

tu mets Y à 0 au tout début, et plus jamais après, tu dois le remettre à 0 chaque fois que tu refais une nouvelle épreuve.

Posté par
princeleking
re : Bloqué sur un algorithme 06-12-17 à 15:59

j'ai fais ça mais ça ne marche toujours pas

Posté par
Glapion Moderateur
re : Bloqué sur un algorithme 06-12-17 à 19:17

je ne vois pas très bien où s'arrêtent tes boucles for (je ne vois pas les end)
le test If Y=0 doit avoir lieu après la fin de la boucle For(I,1,20) et avant celle de For(I,1,20)



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1730 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !