Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Algorithmes

Posté par
Nami59
28-02-18 à 17:30

Bonjour à tous j'ai un exercice sur des algos mais n'en n'ayant pas beaucoup fait en 2nde j'ai vraiment du mal

Un éléphant se déplace en trois points de son territoire. Il part du point A et effectue 3 déplacements :
Soit il tourne dans le sens des aiguilles d'une montre avec 2 chances sur 3 sinon il se déplace dans le sens inverse des aiguilles d'une montre.
On suppose que chacun de ses déplacements est indépendant des précédents.
1) écrire un algo simulant un trajet de l'éléphant et donnant en sortie le point où se trouve l'éléphant (A, B ou C)
2) écrire un algo donnant en sortie la fréquence de réalisation de l'événement "l'éléphant arrive sur le point B" lorsqu'on considère N trajets (l'éléphant repart toujours de A)

Pour la question 1 déja, j'ai pensé à :
variables : A, B et C sont des réels
initialisation : 0 -> A
                               0 -> B
                               0 -> C
traitement : RanInt#(1,3) -> D
                          Si D = 1
                          Alors A+1 -> A
                          Fin si
                          Si D = 2
                          Alors B+1 -> B
                          Fin si
                          Si D = 3
                          Alors C+1 -> C
                          Fin si
Sortie : Afficher A
                 Afficher B
                 Afficher C

je ne sais vraiment pas si cela est correct et je ne sais pas comment je pourrai introduire la proba de 1/3 et 2/3

Posté par
coatch
re : Algorithmes 28-02-18 à 17:35

Salut ,

Alors je ne suis pas experte en la matière mais il faut y introduire une boucle : (voir en bleu) parce que 2 fois la condition Si ... Alors ... est très rare.

initialisation : 0 -> A
                               0 -> B
                               0 -> C
traitement : RanInt#(1,3) -> D
                          Si D = 1
                          Alors A+1 -> A
                          Fin si
                          Si D = 2
                          Alors B+1 -> B

                          Fin si
                          Si D = 3
                          Alors C+1 -> C
                          Fin si
Sortie : Afficher A
                 Afficher B
                 Afficher C

Posté par
coatch
re : Algorithmes 28-02-18 à 17:37

Ensuite, il y a des conditions que je ne comprends pas :

Par exemple, RanInt#(1,3) -> D ----> D correspond à quoi ?

Posté par
Nami59
re : Algorithmes 28-02-18 à 17:41

D correspond à une valeur aléatoire

Pour la boucle je ne sais pas trop par quoi la remplacer

Posté par
coatch
re : Algorithmes 28-02-18 à 17:51

D'accord mais pour moi, si tu ne met pas D dans l'initialisation il ne sert pas à grand chose.

Ensuite  :

Alors A+1 -> A
Alors B+1 -> B

Tu voulais dire quoi ?

Parce que si tu met A ou B -> 0
A ou B sera toujours égale à 1 et de plus si tu dis que :

"     Si D = 1
        Alors A+1 -> A -------> Quand D vaudra 2 ou 3 que se passe t-il pour A ?
       Fin si
       Si D = 2
       Alors B+1 -> B  -------> Quand D vaudra 1 ou 3 que se passe t-il pour B ?
       Fin si "

Et dans ton énoncé je suppose que A et B représente 1/3 et 1/3 pour le fait qu'il tourne dans les aiguilles d'une montre ?

Posté par
coatch
re : Algorithmes 28-02-18 à 17:54

Et j'ai oublié de dire pour

Citation :
"     Si D = 1
        Alors A+1 -> A -------> Quand D vaudra 2 ou 3 que se passe t-il pour A ?
       Fin si
       Si D = 2
       Alors B+1 -> B  -------> Quand D vaudra 1 ou 3 que se passe t-il pour B ?
       Fin si "


Il est où le D dans tes calculs ?

Posté par
Nami59
re : Algorithmes 28-02-18 à 17:56

Quand D n'est pas égal à ce nombre A -> A pareil pour B

L'éléphant est en A et il y a 2 chances sur 3 pour qu'il aille en C et 1 chance sur 3 qu'il aille en B et ainsi de suite jusqu'à ce qu'il est fait les 3 déplacements

Posté par
Nami59
re : Algorithmes 28-02-18 à 17:57

Le D c'est la valeur aléatoire que la calculatrice aura choisi

Posté par
carita
re : Algorithmes 28-02-18 à 18:14

bonsoir

je pense que l'algo que tu proposes ne donne pas en sortie ce qu'on en attend,
à savoir en sortie le point où se trouve l'éléphant (A, B ou C)

tel quel, le traitement que tu proposes ne va fonctionner qu'une seule fois (un seul déplacement de l'éléphant) :
donc,  faire une boucle, comme le conseille  coatch

ensuite,  à  l'affichage,  A, B et C sont des nombres, pas des points... et tu les affiches tous !

tu dois repenser ton approche :
pourquoi ne pas garder une seule variable nombre, D par exemple, la faire évoluer selon les déplacements de l'éléphant (comment ? je te laisse réfléchir)
et à l'affichage seulement, selon la valeur contenu dans D, afficher "point A" ou "B", ou "C" ...?

nb : le nombre aléatoire : 2 possibilités suffisent
on n'envisage pas que l'éléphant fasse du sur-place.

Posté par
coatch
re : Algorithmes 28-02-18 à 18:24

Regarde ton enoncé car tu me dis deux choses différentes

Citation :
Soit il tourne dans le sens des aiguilles d'une montre avec 2 chances sur 3 sinon il se déplace dans le sens inverse des aiguilles d'une montre.


Premier énoncé que tu as mis.

Sens des aiguilles d'une montre : 2/3
Sens inverses des aiguilles d'une montre : 1/3

Et après

Citation :
L'éléphant est en A et il y a 2 chances sur 3 pour qu'il aille en C et 1 chance sur 3 qu'il aille en B et ainsi de suite jusqu'à ce qu'il est fait les 3 déplacements


Mets sens des aiguilles d'une montre ils sont où ?

Est ce qu'il y a un lien entre lorsque l'éléphant est en A, pour aller en C (c'est à dire dans le sens des aiguilles d'une montre) il a 2 chances sur 3
Et inversement pour le point B.

A--------> C  Donc sens des aiguilles d'une montre
       2/3
A--------> B Donc sens contraire des aiguilles d'une montre
       1/3

C'est ça ?

Posté par
coatch
re : Algorithmes 28-02-18 à 18:24

Ah voila l'experte en algo
Salut Carita

Posté par
carita
re : Algorithmes 28-02-18 à 18:27

salut coatch !
experte est très largement abusif...

Posté par
coatch
re : Algorithmes 28-02-18 à 18:29

Mais non !

Je te laisse avec Carita elle sera beaucoup mieux t'expliquer que moi.

-----

Dis (je devrais pas le demander ici ) tu pourrais venir voir mon topics après on m'a abandonné

-----
Aller bon courage

Posté par
patrice rabiller
re : Algorithmes 28-02-18 à 19:31

Bonsoir,

Tout d'abord, il faudrait savoir comment sont disposé les points A, B et C. Je propose de les situer comme ceci (sens des aiguilles d'une montre A->B->C->A):
Algorithmes
Ensuite, il faut "coder les positions A, B et C".
On peut dire que la position A est 0, celle du point B est 1 et celle du point C est 2.
Le premier algorithme doit indiquer, à partir du point A, au bout de 3 déplacements, où se trouve l'éléphant.

Dans ces conditions je propose ceci :

Début
      P prend la valeur 0 (P est la position = 0, 1 ou 2)
      Répéter 3 fois
            x est un nombre au hasard entre 0 et 1
            si    x < 2/3
                  alors y prend la valeur y+1   (il va dans le sens des aiguilles d'une montre)
                  sinon y prend la valeur y-1  (il va dans le sens giratoire du code de la route)
            Fin si
            si y=3 alors y prend la valeur 0 fin si
            si y=-1 alors y prend la valeur 2  fin si
      fin répéter
      Si y=0 alors afficher "l'éléphant est en A"
      si y=1 alors afficher "l'éléphant est en B"
      si y=2 alors afficher "l'éléphant est en C"
Fin.

En utilisant les opérations modulo 3, on aurait pu simplifier un peu la fin de l'algorithme mais ceci est au programme d'arithmétique de Terminale S.

Posté par
patrice rabiller
re : Algorithmes 28-02-18 à 19:34

Je me suis emmêlé les pinceaux : la variable du début est y (et non pas P) pour la position de l'éléphant. (ou alors, il faut remplacer les y par des P dans tout l'algorithme).

Posté par
carita
re : Algorithmes 28-02-18 à 19:42

bonsoir patrice rabiller

Nami59 n'a plus grand chose à faire :/

sauf supprimer qq tests si elle veut.

Posté par
patrice rabiller
re : Algorithmes 28-02-18 à 19:53

Oui, je suis désolé d'avoir donné une réponse presque complète... J'aurais dû donner un algorithme à compléter. Le problème c'est que je ne peux pas supprimer mon post, ni même le modifier (c'est interdit sur ce forum pour des raisons que je comprends très bien). Cependant il y avait une information importante qui manquait pour pouvoir raisonner simplement : la disposition des points A, B et C. À mon avis, soit l'énoncé a été mal recopié, soit il est incomplet.

Posté par
Nami59
re : Algorithmes 28-02-18 à 19:54

Merci pour vos aides mais peut-on vraiment mettre un "répéter 3 fois" dans un algo ?

Posté par
patrice rabiller
re : Algorithmes 28-02-18 à 20:00

Dans un algorithme, on peut, bien sûr, mettre un "répéter 3 fois".

Après, selon le langage utilisé, il faudra utiliser une ou plusieurs instructions. Il faut se souvenir qu'un algorithme est une description, en français, permettant de résoudre sans ambigüité le problème qu'on se pose, en un nombre fini d'étapes.

Posté par
Nami59
re : Algorithmes 28-02-18 à 20:05

d'accord merci beaucoup
je vais essayer de faire la question 2 pour demain

Posté par
Nami59
re : Algorithmes 02-03-18 à 15:06

J'ai re regardé l'algo mais j'ai du mal à le comprendre

Posté par
patrice rabiller
re : Algorithmes 02-03-18 à 17:15

Qu'est-ce que tu ne comprends pas ?

Posté par
Nami59
re : Algorithmes 02-03-18 à 17:36

J'ai du mal avec les algo en général mais je comprend pas trop  avec les y et pourquoi on fait comme cela

Posté par
patrice rabiller
re : Algorithmes 02-03-18 à 17:49

La variable y sert à indiquer la position de l'éléphant, comme ceci :
Algorithmes
Au départ, l'éléphant est en A. Donc on initialise la variable y avec la valeur 0. Mais ensuite, y peut prendre les valeurs 1 ou 2...
Ensuite si l'éléphant tourne dans le sens des aiguilles d'une montre, alors on ajoute 1.
      ->    si y vaut 0 alors y prendra la valeur y+1, c'est-à-dire 1
      ->    Si y vaut 1, alors y prendra la valeur y+1 c'est-à-dire 2
       ->    si y vaut 2, alors y prendra la valeur y+1, c'est-à-dire 3.
Lorsque y est égal à 3, alors l'éléphant a fait le tour complet : il est revenu en A et la valeur de y devient égale à 0.

Si l'éléphant va dans l'autre sens, c'est pareil , sauf qu'au lieu d'ajouter 1 ou soustrait 1. Lorsque y vaut 0 (l'éléphant est en A puis a avancé dans le sens giratoire du code de la route et se trouve en, B) alors il faut lui affecter la valeur 2 et non pas -1.

Pour le sens de déplacement de l'éléphant, on choisit un nombre au hasard entre 0 et 1. Si le nombre est inférieur à 2/3 (2 chances sur 3) alors l'éléphant va avancer dans le sens horaire, sinon il va avancer dans le sens giratoire.

Posté par
Nami59
re : Algorithmes 02-03-18 à 17:58

Ah d'accord j'ai compris maintenant merci beaucoup

Posté par
Coucou59
re : Algorithmes 06-03-18 à 11:07

Nami 59 n'est-il pas de ND ? xD

Posté par
Nami59
re : Algorithmes 06-03-18 à 18:14

Oui

Posté par
Nami59
re : Algorithmes 08-03-18 à 21:34

patrice rabiller bonsoir j'ai revu l'algo et j'ai remarqué que les points B et C sont inversés donc j'ai modifié l'algo et j'aimerai savoir si il est bon
Début
      P prend la valeur 0 (P est la position = 0, 1 ou 2)
      Répéter 3 fois
            x est un nombre au hasard entre 0 et 1
            si    x < 2/3
                  alors y prend la valeur y+1  
                  sinon y prend la valeur y-1  
            Fin si
            si y=3 alors y prend la valeur 0 fin si
            si y=1 alors y prend la valeur 2  fin si
      fin répéter
      Si y=0 alors afficher "l'éléphant est en A"
      si y=1 alors afficher "l'éléphant est en C"
      si y=2 alors afficher "l'éléphant est en B"
Fin.

Posté par
carita
re : Algorithmes 08-03-18 à 21:59

bonsoir Nami59
je ne fais que passer en attendant le retour de patrice rabiller avec lequel tu as bien avancé.

juste une remarque :
l'algo que t'as donné patrice rabiller, c'était juste pour t'expliquer le "fonctionnement",
pour t'aider à démarrer.
mais tu  peux l'améliorer en supprimant des tests qui vont "ralentir" le fonctionnement,


par exemple : le test " si y=3 alors y prend la valeur 0 fin si ,
à ton avis, dans quel cas on peut avoir y=3 ?
quand on aura fait " y prend la valeur y+1"   ou bien " y prend la valeur y-1" ?

où pourrait-on déplacer l'instruction " y prend la valeur 0" pour éviter le test ?

----

même remarque pour :  "si y=1 alors y prend la valeur 2  fin si "

---

de même pour l'affichage :
   Si y=0 alors afficher "l'éléphant est en A"
      si y=1 alors afficher "l'éléphant est en C"
      si y=2 alors afficher "l'éléphant est en B"
  -----  on peut alléger en utilisant des SI.... SINON

pourquoi  ?
parce que tel quel, la machine va exécuter les 3 tests, séquentiellement l'un après l'autre.

or, y est  SOIT=0,    SOIT = 1,    SOIT  = 2
... tu  fais faire 3 tests alors qu'un seul suffirait à l'exécution.

Posté par
Nami59
re : Algorithmes 08-03-18 à 22:06

Merci pour ta réponse
Pour ta 1ere question c'est lorsque y prend la valeur y + 1 ?
Par contre pour déplacer je ne vois pas trop

Posté par
carita
re : Algorithmes 08-03-18 à 22:13

oui, bonne réponse.

où déplacer ?
     si    x < 2/3
                  alors y prend la valeur y+1  
                               ici

                  sinon y prend la valeur y-1  
                              et donc ici, que vas-tu mettre ?
        finsi

Posté par
carita
re : Algorithmes 08-03-18 à 22:14

* je rectifie une erreur sur mon message de 21h59 (la dernière ligne)

... tu  fais faire 3 tests alors qu'un ou deux suffiraient à l'exécution.

Posté par
carita
re : Algorithmes 08-03-18 à 22:23

     si    x < 2/3
                  alors y prend la valeur y+1  
                             si y=3 alors y prend la valeur 0
                             fin si

                  sinon y prend la valeur y-1  
                 ..... complète
        finsi


en déplaçant l'instruction " si y=3 alors y prend la valeur 0"  à cet endroit-là,
le test ne s'exécutera seulement dans le cas où x<2/3  (section ALORS).

Posté par
patrice rabiller
re : Algorithmes 09-03-18 à 07:48

Bonjour,

Je suis d'accord avec carita quand elle dit qu'on peut réduire le nombre de tests à effectuer, mais l'argument "vont ralentir le fonctionnement" est un peu exagéré (on va gagner une petite fraction de seconde). De plus le nombre de tests à écrire va être le même (je ne dis pas qu'ils seront tous effectués). Enfin, on ne gagne pas vraiment en clarté.

Par ailleurs, je n'avais pas inversé les points B et C comme le dit Nami59. Dans mon schéma du message du 2 mars à 17h49, les valeurs de 0, 1, 2 pour y correspondent bien, dans cet ordre, aux positions A, B, C.

Algorithmes

Posté par
Nami59
re : Algorithmes 09-03-18 à 11:29

Oui mais mes points sur mon exo sont inversé c'est pour cela que j'ai modifié l'algo

Posté par
patrice rabiller
re : Algorithmes 09-03-18 à 11:35

Si tes points sont placés différemment alors ça change les conditions de l'algorithme, car le sens horaire, pour toi, est A,C,B. Il aurait peut-être fallu nous montrer ta figure plus tôt !

Posté par
patrice rabiller
re : Algorithmes 09-03-18 à 11:54

Voici peut-être une figure qui ressemble à la tienne :
Algorithmes

L'algorithme, si on garde les codes A = 0; C = 1 et B = 2, est alors celui que tu as proposé en inversant B et C...

Posté par
Nami59
re : Algorithmes 10-03-18 à 19:11

Merci
Pour le 2è algo j'ai pensé à :

variables : N et F sont des réels
entrée : saisir N
traitement : F prend la valeur N/3
sortie : afficher F/3

est ce que cela est bon ?

Posté par
patrice rabiller
re : Algorithmes 11-03-18 à 06:01

Non, tu n'y es pas du tout...

Il faut faire N trajets de 3 déplacements, donc une boucle avec une variable compteur K (par exemple) qui va aller de 1 à N.
Ensuite, pour chaque trajet de 3 déplacements (à l'intérieur de la boucle donc), il faut regarder si l'éléphant est en B ou pas. Donc il faut faire un test et, si l'éléphant est en B, ajouter 1 à la variable E (par exemple) qui compte le nombre de fois où l'éléphant est en B à l'issue des 3 déplacements.
Enfin, en sortie il faut afficher la fréquence des positions en B, soit E/N.

L'algorithme simplifié ressemblera à ceci :

Début
      E prend pour valeur 0
      Pour K de 1 à N
            Faire 3 déplacements de l'éléphant à partir de A
            Si la position de l'éléphant est B
                  alors E prend pour valeur E+1
            Fin si
      Fin pour
      F prend pour valeur E/N
      Afficher F
Fin

La partie en bleu doit être détaillée ... en s'inspirant de l'algorithme précédent.

Posté par
Nami59
re : Algorithmes 11-03-18 à 11:19

Ah d'accord, je te remercie beaucoup pour ton aide et ta patience bonne journée



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 1675 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 !