Bonjour,
J'ai un dm a faire sur des algorithmes pour lundi. Je n'arrive pas à le programmer sur Algobox....
Voici le sujet :
Après s'être longuement attardée dans un bar, une personne décide de retourner chez elle. Sa démarche est mal assurée et ses déplacements un peu chaotiques. Un obstacle important la sépare de son domicile. Elle doit traverser un pont muni d'une barrière sur le côté droit mais pas a gauche. Le pont fait 15 pas de long et 4 de large. La démarche de la personne est particulière et ses déplacements sont les suivants:
-Soit elle avance d'un pas en avant
-Soit elle se déplace en diagonale vers la gauche (déplacement équivalent à un pas vers la gauche suivi d'un pas vers le haut)
-Soit elle se déplace en diagonale vers la droite.
On suppose que ces trois déplacements possibles sont aléatoires et équiprobables. On suppose de plus que la personne se trouve au milieu du pont lorsqu'elle entame sa traversée. L'objectif est de déterminer une estimation de la probabilité qu'elle réussisse à traverser le pont.
Première partie: simulation avec un dé
Simuler 4 tentatives de traversée a l'aide d'un dé. Expliquer la démarche utilisée.
(En cours nous avons travaillé avec le même énoncé sauf que le le pont ne possédait aucune barrière…. Nous avions donc ainsi décidé de choisir 1 et 2 pour un déplacement en diagonale à gauche, 3 et 4 pour un déplacement à droite, 5 et 6 pour un déplacement en diagonale droite. Ici il y a une barrière donc je pensais procéder de la même manière mais lorsqu'il arrive à droite prêt a tomber et que le dé me donne le chiffre 5 ou 6 je voulais dire que ce déplacement correspondait à un déplacement vers l'avant comme si il longeait la barrière. Qu'en pensez-vous?)
Deuxième partie : simulation informatique
Les algorithmes suivants devront être implémentés sur ordinateur et envoyés par mail. Vous utiliserez algobox.
1-Modifier l'algorithme écrit en cours pour qu'il simule une traversée avec cette nouvelle configuration.
(j'ai donc réecrit l'algorithme comme ceci:
Variables : x,y
Traitement: x prend la valeur 0
y prend la valeur 0
TANT QUE x=>-2 ET x<2 ET y<=15
x prend la valeur x+entier aléatoire choisi parmi -1,0 et 1
y prend la valeur y+1
FIN TANT QUE
SI y<15
Afficher "La personne est tombée"
FIN SI
SI y=16
Afficher "Traversée réussie"
FIN SI
est-ce que mon algorithme est correct ?? si non où y-a-t-il une erreur ? Si oui comment fait-on pour rentrer la ligne "x+entier aléatoire choisi parmi -1,0 et 1 sur algobox?
Je vous remercie d'avance pour vos réponses
Salut
Pour la partie 1 ton raisonnement me semble correct. Pour ce qui est de l'algorithme je peux déjà te dire que tu as oublié la contrainte de la barrière. Supposons que tu ais mis 2 pour la limite de droite tu peux essayer de palier a ce problème avec un SI dans ta boucle TANT QUE...
Pour entrer un nombre aléatoire dans Algobox tu as la fonction : ALGOBOX_ALEA_ENT(n,p)
qui permet de choisir un nombre de manière aléatoire entre n et p.
Je ne suis absolument pas sur de ce que je vais dire mais je vais quand meme le dire
Est-ce qu'il faudrait que je mettes une boucles SI comme sa :
SI x=2
x prend la valeur x+0
y prend la valeur y+1
Si j'ai bien compris ce que vous m'avez dit, il faut que je rajoutes une boucle SI pour envisager le fait que la personne longe la barrière. Ainsi, x serai au même point mais y avancerait d'un ??
De plus, j'ai essayé de mettre la fonction ALGOBOX_ALEA_ENT(n,p) mais cela me met erreur à chaque fois.......
Bonjour,
appeler "SI" une "boucle" est un biais psychologique qui force une mauvaise compréhension à la base
les boucles ont pour but de répéter des instructions
SI ne répète rien du tout, il autorise ou pas un bloc d'instruction à être exécuté ou pas en fonction d'une condition
la condition est ici pour savoir si la personne tape dans la barrière ou passe sur le côté
(donc un test pour savoir si elle est arrivée à la barrière (sur y) et si elle est en face (sur x)
puis les instructions dans le corps du "SI" seront donc des
afficher "la personne est passé"
ou (SINON) afficher "la personne ne passe pas"
il faudra deux SI / SINON car il y a trois cas :
la personne n'est pas encore arrivé au niveau de la barrière
la personne est au niveau de la barrière et tape dedans
la personne est au niveau de la barrière et passe.
pour le ALGOBOX_ALEA_ENT(n,p) je pense que dans cette fonction n et p doivent être des entiers 0 (-1 ne marche pas)
à vérifier, et à corriger les valeurs en fonction de ça.
Mon algorithme de base que nous avons fait avec le prof est:
variables : x,y
Traitement: x prend la valeur 0
y prend la valeur 0
TANT QUE x=>-2 et x<=2 et y<=15
x prend la valeur x+entier aléatoire choisi parmi -1,0 et 1
y prend la valeur y+1
FIN TANT QUE
SI y<15
Afficher "La personne est tombée"
FIN SI
SI y=16
Afficher "Traversée réussie"
FIN SI
Ceci est donc l'algorithme que le prof a fait. Dans l'énoncé il n'y avait pas de barrières..... J'ai pensé qu'il fallait juste enlever le = a "x<=2"...... Je ne comprends pas beaucoup les algorithme donc j'ai un peu de mal.....
Moi pour corriger le problème de la barrière je mettrais bien un SI juste après ton TANT QUE
SI x=2
x prend la valeur x+entier aléatoire choisi parmi -1,0 et 1
avec dans ce SI un autre:
SI x=3
x prend la valeur 2
y prend la valeur y+1
SINON
x prend la valeur x+entier aléatoire choisi parmi -1,0 et 1
y prend la valeur y+1
Pourquoi x=3 ??
Je ne comprends pas trop. ...
De plus .. aurais tu une solution pour le fait qu'algobox me refuse le -1?
En gros si = 3 ca veut dire que le mec se déplace vers la droite, mais vu que il y a la barrière je redonne à x la valeur 2 pour simuler le fait qu'il est bloquer. Pour le problème je pense que tu peut modifier les valeurs pour ne pas avoir de nombres négatifs.
J'aurais peut être dû le préciser avant mais avec le sujet nous avons une annexe qui représente le pont sous forme de cadrillage. Je peux peut être la mettre sur le forum pour que tu vois ce qu'on peut envisager avec le nombre négatif ?
Merci beaucoup pour le temps que tu me consacre
Je pense que oui tu pourrais mettre l'annexe Ne tkt pas pour ça je suis aussi en term et ça me fais réviser
Entre temps j'ai réfléchi et je me suis dis que j'allais remplacer les valeurs de base par celles ci.
A la base, le 0 correspondait au -2, le 1 correspondait au -1 etc etc .... J'ai changé pour éviter d'avoir une valeur négative à rentrer sur algobox
entre temps j'ai quand même réfléchi et réécrit un algorithme peut-tu me dire s'il te semble bon stp ??
variables : x,n,y,alea
Traitement: x prend la valeur 0
n prend la valeur 0
y prend la valeur 0
alea prend la valeur 0
TANT QUE x=>-2 ET x<=2 et y<=15
alea prend la valeur ALGOBOX_ALEA_ENT (0,2)
SI alea =0
x prend la valeur x-1
FIN SI
SI alea = 1
x prend la valeur x
FIN SI
SI alea =2
x prend la valeur x+1
FIN SI
SI x>2
x prend la valeur 2
FIN SI
y prend la valeur y+1
SI y=16
n prend la valeur n+1
FIN SI
FIN TANT QUE
Afficher n
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :