Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

Programme sur Algobox

Posté par
Earz75
29-04-16 à 19:07

Bonjour, j'ai un devoir maison à rendre pour ce lundi et je dois réaliser un programme sur Algobox sur le jeu du lièvre et de la tortue.
Le problème est que c'est le prof qui la réaliser et qu'il nous demande de le compléter... L'algorithme est le suivant :

1   VARIABLES
2     i EST_DU_TYPE NOMBRE
3     d EST_DU_TYPE NOMBRE
4   DEBUT_ALGORITHME
5     i PREND_LA_VALEUR 0
6     TANT_QUE (i<?) FAIRE
7       DEBUT_TANT_QUE
8       d PREND_LA_VALEUR ALGOBOX_ALEA_ENT(?,?)
9       SI (d<?) ALORS
10        DEBUT_SI
11        i PREND_LA_VALEUR ?
12        FIN_SI
13        SINON
14          DEBUT_SINON
15          i PREND_LA_VALEUR 5
16          FIN_SINON
17      FIN_TANT_QUE
18    SI (i==?) ALORS
19      DEBUT_SI
20      AFFICHER "La tortue a gagné"
21      FIN_SI
22      SINON
23        DEBUT_SINON
24        AFFICHER "Le lièvre a gagné"
25        FIN_SINON
26  FIN_ALGORITHME

Merci de votre aide !

Posté par
Glapion Moderateur
re : Programme sur Algobox 29-04-16 à 19:15

Il a dû te définir quand même les règles de la course ?
avec quelles probabilités la tortue et le lièvre avancent ? ils gagnent quand ils atteignent quelle position ?

Si tu connais les règles de la course, le programme est plutôt facile à comprendre et à compléter, qu'est-ce que tu proposes ?

Posté par
cocolaricotte
re : Programme sur Algobox 29-04-16 à 19:17

Bonjour

As tu utilisé un moteur de  recherche avec les mots

Algorithme lièvre tortue

Tu devrais trouver ce que tu cherches

Posté par
cocolaricotte
re : Programme sur Algobox 29-04-16 à 19:19

Il manque quand même les règles du jeu ! Comment se déroule le jeu ?

Posté par
Earz75
re : Programme sur Algobox 29-04-16 à 19:32

Oui j'ai déjà utilisé un moteur de recherche pour tenter de trouver des solutions, mais je ne l'ai trouvé nul part.
Les règles du jeu sont simples. À chaque tour, on lance un dé. Si le 6 sort, alors le lièvre
gagne la partie, sinon la tortue avance d'une case. La tortue
gagne quand elle a avancé 6 fois.
J'ai tenté pas mal de choses mais c'est souvent le même résultat qui tombe, ou c'est le lièvre qui gagne toujours ce qui n'est pas possible ou c'est la tortue ou bien le programme me dit : "dépassement de la capacité autorisée pour les boucles".
Je suis bloqué et je pense pourtant avoir tout essayé.

Posté par
Earz75
re : Programme sur Algobox 29-04-16 à 19:34

Voici ce que j'ai essayé :

1   VARIABLES
2     i EST_DU_TYPE NOMBRE
3     d EST_DU_TYPE NOMBRE
4   DEBUT_ALGORITHME
5     i PREND_LA_VALEUR 0
6     TANT_QUE (i<6) FAIRE
7       DEBUT_TANT_QUE
8       d PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,6)
9       SI (d<6) ALORS
10        DEBUT_SI
11        i PREND_LA_VALEUR i+1
12        FIN_SI
13        SINON
14          DEBUT_SINON
15          i PREND_LA_VALEUR 5
16          FIN_SINON
17      FIN_TANT_QUE
18    SI (i==6) ALORS
19      DEBUT_SI
20      AFFICHER "La tortue a gagné"
21      FIN_SI
22      SINON
23        DEBUT_SINON
24        AFFICHER "Le lièvre a gagné"
25        FIN_SINON
26  FIN_ALGORITHME

Posté par
cocolaricotte
re : Programme sur Algobox 29-04-16 à 19:37

Tu as vraiment cherché avec

Si le 6 sort, alors le lièvre  gagne la partie, sinon la tortue avance d'une case + algorithme

Posté par
Earz75
re : Programme sur Algobox 29-04-16 à 19:39

Le problème est que je n'ai pas le droit de modifier cet algorithme, je dois seulement le compléter et le vérifier à l'aide du programme Algobox

Posté par
bbomaths
re : Programme sur Algobox 30-04-16 à 01:02

Bonsoir.

Et en couleurs...


 \\ 1\hspace{2em}\text{VARIABLES}
 \\ 2\hspace{4em}\textcolor{blue}{\text{// i : compteur d'avance de la tortue}}
 \\ 3\hspace{4em}\text{i EST\_DU\_TYPE NOMBRE}
 \\ 4\hspace{4em}\textcolor{blue}{\text{// d : valeur\ du\ dé}}
 \\ 5\hspace{4em}\text{d EST\_DU\_TYPE NOMBRE}
 \\ 6
 \\ 7\hspace{2em}\text{DEBUT\_ALGORITHME}
 \\ 8\hspace{4em}\textcolor{blue}{\text{// initialisation}}
 \\ 9 \hspace{4em}\text{i PREND\_LA\_VALEUR 0}
 \\ 10
 \\ 11\hspace{4em}\textcolor{blue}{\text{// valeur testée i}}
 \\ 12\hspace{8em}\textcolor{blue}{\text{// jet du dé}}
 \\ 13\hspace{8em}\text{d PREND\_LA\_VALEUR ALGOBOX\_ALEA\_ENT(1,6)}
 \\ 14\hspace{8em}\textcolor{blue}{\text{// la tortue a-t-elle gagnée ?}}
 \\ 15\hspace{8em}\text{SI (d \textless\ 6) ALORS}
 \\ 11\hspace{10em}\textcolor{blue}{\text{// oui : compteur + 1}}
 \\ 17\hspace{10em}\text{DEBUT\_SI}
 \\ 18\hspace{12em}\text{i PREND\_LA\_VALEUR i+1}
 \\ 19\hspace{10em}\text{FIN\_SI}
 \\ 20\hspace{8em}\text{SINON}
 \\ 21\hspace{8em}\textcolor{blue}{\text{// non : le lièvre a gagné}}
 \\ 22\hspace{10em}\text{DEBUT\_SINON}
 \\ 23\hspace{12em}\textcolor{blue}{\text{// compteur = 5}}
 \\ 24\hspace{12em}\text{i PREND\_LA\_VALEUR 5}
 \\ 25\hspace{10em}\text{FIN\_SINON}
 \\ 26
 \\ 27\hspace{6em}\textcolor{red}{\text{// la valeur de test i est incrémentée de 1 automatiquement}}
 \\ 28\hspace{4em}\text{FIN\_TANT\_QUE}
 \\ 29
 \\ 30\hspace{4em}\textcolor{blue}{\text{// nombre d'avance de la tortue = 6 ?}}
 \\ 31\hspace{4em}\text{SI (i == 6) ALORS}
 \\ 32\hspace{6em}\textcolor{blue}{\text{// oui : afficher la tortue comme gagnante}}
 \\ 33\hspace{6em}\text{DEBUT\_SI}
 \\ 34\hspace{8em}\text{AFFICHER ``La tortue a gagnée'''}
 \\ 35\hspace{6em}\text{FIN\_SI}
 \\ 36\hspace{4em}\text{SINON}
 \\ 37\hspace{6em}\textcolor{blue}{\text{// non : afficher le lièvre comme gagnant}}
 \\ 38\hspace{6em}\text{DEBUT\_SINON}}
 \\ 39\hspace{8em}\text{AFFICHER ``Le lièvre a gagné''}
 \\ 40\hspace{6em}\text{FIN\_SINON}
 \\ 41
 \\ 42\hspace{2em}\text{FIN\_ALGORITHME}
 \\ 
 \\ 
 \\

Posté par
bbomaths
re : Programme sur Algobox 30-04-16 à 01:13

Oups, il manque une ligne... d'où la correction :


 \\ 1\hspace{2em}\text{VARIABLES}
 \\ 2\hspace{4em}\textcolor{blue}{\text{// i : compteur d'avance de la tortue}}
 \\ 3\hspace{4em}\text{i EST\_DU\_TYPE NOMBRE}
 \\ 4\hspace{4em}\textcolor{blue}{\text{// d : valeur\ du\ dé}}
 \\ 5\hspace{4em}\text{d EST\_DU\_TYPE NOMBRE}
 \\ 6
 \\ 7\hspace{2em}\text{DEBUT\_ALGORITHME}
 \\ 8\hspace{4em}\textcolor{blue}{\text{// initialisation}}
 \\ 9 \hspace{4em}\text{i PREND\_LA\_VALEUR 0}
 \\ 10
 \\ 11\hspace{4em}\textcolor{blue}{\text{// valeur testée i}}
 \\ 12\hspace{4em}\text{TANT\_QUE (i \textless\ 6) FAIRE}
 \\ 13\hspace{8em}\textcolor{blue}{\text{// jet du dé}}
 \\ 14\hspace{8em}\text{d PREND\_LA\_VALEUR ALGOBOX\_ALEA\_ENT(1,6)}
 \\ 15\hspace{8em}\textcolor{blue}{\text{// la tortue a-t-elle gagnée ?}}
 \\ 16\hspace{8em}\text{SI (d \textless\ 6) ALORS}
 \\ 17\hspace{10em}\textcolor{blue}{\text{// oui : compteur + 1}}
 \\ 18\hspace{10em}\text{DEBUT\_SI}
 \\ 19\hspace{12em}\text{i PREND\_LA\_VALEUR i+1}
 \\ 20\hspace{10em}\text{FIN\_SI}
 \\ 21\hspace{8em}\text{SINON}
 \\ 22\hspace{8em}\textcolor{blue}{\text{// non : le lièvre a gagné}}
 \\ 23\hspace{10em}\text{DEBUT\_SINON}
 \\ 24\hspace{12em}\textcolor{blue}{\text{// compteur = 5}}
 \\ 25\hspace{12em}\text{i PREND\_LA\_VALEUR 5}
 \\ 26\hspace{10em}\text{FIN\_SINON}
 \\ 27
 \\ 28\hspace{6em}\textcolor{red}{\text{// la valeur de test i est incrémentée de 1 automatiquement}}
 \\ 29\hspace{4em}\text{FIN\_TANT\_QUE}
 \\ 30
 \\ 31\hspace{4em}\textcolor{blue}{\text{// nombre d'avance de la tortue = 6 ?}}
 \\ 32\hspace{4em}\text{SI (i == 6) ALORS}
 \\ 33\hspace{6em}\textcolor{blue}{\text{// oui : afficher la tortue comme gagnante}}
 \\ 34\hspace{6em}\text{DEBUT\_SI}
 \\ 35\hspace{8em}\text{AFFICHER ``La tortue a gagnée''}
 \\ 36\hspace{6em}\text{FIN\_SI}
 \\ 37\hspace{4em}\text{SINON}
 \\ 38\hspace{6em}\textcolor{blue}{\text{// non : afficher le lièvre comme gagnant}}
 \\ 39\hspace{6em}\text{DEBUT\_SINON}}
 \\ 40\hspace{8em}\text{AFFICHER ``Le lièvre a gagné''}
 \\ 41\hspace{6em}\text{FIN\_SINON}
 \\ 42
 \\ 43\hspace{2em}\text{FIN\_ALGORITHME}
 \\

Posté par
Chatof
re : Programme sur Algobox 30-04-16 à 07:03

bonjour,
Je pense qu'il faut lire :
15          i PREND_LA_VALEUR 6
et non
15          i PREND_LA_VALEUR 5

ou bien on change la règle en:
La tortue gagne quand elle a avancé 5 fois.
et on change les 6 en 5 dans le programme.

Posté par
Chatof
re : Programme sur Algobox 30-04-16 à 08:01

Une solution

1   VARIABLES
2     i EST_DU_TYPE NOMBRE
3     d EST_DU_TYPE NOMBRE
4   DEBUT_ALGORITHME
5     i PREND_LA_VALEUR 0
6     TANT_QUE (i<5) FAIRE
7       DEBUT_TANT_QUE
8       d PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,6)
9       SI (d<6) ALORS
10        DEBUT_SI
11        i PREND_LA_VALEUR i +5/6
12        FIN_SI
13        SINON
14          DEBUT_SINON
15          i PREND_LA_VALEUR 5
16          FIN_SINON
17      FIN_TANT_QUE
18    SI (i==5) ALORS
19      DEBUT_SI
20      AFFICHER "Le lièvre a gagné"
21      FIN_SI
22      SINON
23        DEBUT_SINON
24        AFFICHER "La tortue a gagné"
25        FIN_SINON
26  FIN_ALGORITHME

mais ça marche !

Posté par
J-P Posteur d'énigmes
re : Programme sur Algobox 30-04-16 à 08:45

   
  VARIABLES 
         i EST_DU_TYPE NOMBRE 
         d EST_DU_TYPE NOMBRE 
   DEBUT_ALGORITHME 
        i PREND_LA_VALEUR 0 
        TANT_QUE (i<6) FAIRE 
            DEBUT_TANT_QUE 
               d PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,6) 
               SI (d<6) ALORS 
                  DEBUT_SI 
                        i PREND_LA_VALEUR (i+1)
                 FIN_SI   
             SINON 
                DEBUT_SINON 
                   i PREND_LA_VALEUR 7 
                FIN_SINON 
           FIN_TANT_QUE 
            SI (i==6) ALORS 
                DEBUT_SI 
                   AFFICHER "La tortue a gagné" 
                FIN_SI 
                 SINON 
                    DEBUT_SINON 
                       AFFICHER "Le lièvre a gagné" 
                    FIN_SINON 
   FIN_ALGORITHME

---------------------------------------
Remarque, dans la ligne "i PREND_LA_VALEUR 7", on peut remplacer le 7 par n'importe quel nombre entier > 6

Posté par
bbomaths
re : Programme sur Algobox 30-04-16 à 09:10


Si tu regardes mon algorithme, tu verras que :

1/ en ligne 12, la valeur testée de la boucle TANT_QUE ... FAIRE est i

2/ si on ne tire pas un 6 (cf. ligne 14), les valeurs qu'elle va prendre vont être 0 (cf. ligne 9), 1, 2, 3, 4, 5 et 6 car la valeur testée est augmentée de +1 à chaque tour de boucle :  0 pour le premier tour, 1 pour le deuxième,  2 pour le troisième, ..., 5 pour le sixième et 6 pour un septième tour qui n'aura pas lieu

3/  donc en ligne 25, on va forcer l'arrêt de la boucle en mettant  i à 5 puisqu'elle va être incrémentée automatiquement à 6...

Posté par
bbomaths
re : Programme sur Algobox 30-04-16 à 09:15

FAUX : on ne peut pas remplacer la valeur 6 par un entier supérieur à 6 car alors le test SI i == 6 ALORS (cf. ligne 32) ne fonctionne plus.

Posté par
J-P Posteur d'énigmes
re : Programme sur Algobox 30-04-16 à 10:25

Si le FAUX concerne mon algo ... Je persiste et signe, l'algo que j'ai donné fonctionne.

Posté par
bbomaths
re : Programme sur Algobox 30-04-16 à 10:57


Exact, problème d'alignement dans l'algorithme...

Posté par
Chatof
re : Programme sur Algobox 30-04-16 à 14:53

Bonjour bbomaths
Avec votre programme  c'est la tortue qui gagne toujours.

Bonjour J-P
Programme sur Algobox

Citation :
Le problème est que je n'ai pas le droit de modifier cet algorithme, je dois seulement le compléter et le vérifier à l'aide du programme Algobox

"15          i PREND_LA_VALEUR 5 "
donc
on peut proposer
15          i PREND_LA_VALEUR 50
à la place de votre    "   i PREND_LA_VALEUR 7   "


Maintenant si on doit juste remplacer les ? alors  je propose:
1   VARIABLES
2     i EST_DU_TYPE NOMBRE
3     d EST_DU_TYPE NOMBRE
4   DEBUT_ALGORITHME
5     i PREND_LA_VALEUR 0
6     TANT_QUE (i<0.6) FAIRE
7       DEBUT_TANT_QUE
8       d PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,6)
9       SI (d<6) ALORS
10        DEBUT_SI
11        i PREND_LA_VALEUR i+ 0.1
12        FIN_SI
13        SINON
14          DEBUT_SINON
15          i PREND_LA_VALEUR 5
16          FIN_SINON
17      FIN_TANT_QUE
18    SI (i==0.6) ALORS
19      DEBUT_SI
20      AFFICHER "La tortue a gagné"
21      FIN_SI
22      SINON
23        DEBUT_SINON
24        AFFICHER "Le lièvre a gagné"
25        FIN_SINON
26  FIN_ALGORITHME

Earz75 Vous seriez très aimable de nous donner la correction (ou l'énoncé corrigé)  du professeur.
(même par mail  voir fiche membre)

Posté par
Chatof
re : Programme sur Algobox 30-04-16 à 15:43

PS:
Avec Algobox  : "Edition" "Mode Edition" "mode éditeur texte"
on peut copier coller le programme (mais pas les images de bbomaths)
Prière d'oublier mes messages de ce matin.

Posté par
Earz75
re : Programme sur Algobox 30-04-16 à 18:15

J'vous remercie de vous être donné tant de mal, et l'algorithme que m'a donné Chatof semble être bon. Cependant, je n'ai pas très bien compris pourquoi il la compléter ainsi.
Je vous donnerai la correction du dm dès que j'aurai reçu.

Posté par
J-P Posteur d'énigmes
re : Programme sur Algobox 30-04-16 à 19:38

Je n'ai rien contre l'algo de Chatof, néanmoins il me semble que le mien est plus "carré".

Posté par
Chatof
re : Programme sur Algobox 30-04-16 à 19:42

oui,
C'est juste que :
15          i PREND_LA_VALEUR 5
est absurde, donc mon programme aussi ... ( un compteur de pas en 1/10 roll: )

Il faut regarder celui de J-P ou

Posté par
Chatof
re : Programme sur Algobox 30-04-16 à 19:44

( un compteur de pas en 1/10      )

Posté par
bbomaths
re : Programme sur Algobox 01-05-16 à 02:28

Chatof, bonjour.

Pourquoi la tortue gagne-t'elle toujours dans mon algorithme ?

Pourriez-vous me dire où se trouve mon erreur ?

Posté par
J-P Posteur d'énigmes
re : Programme sur Algobox 01-05-16 à 09:18

bbomaths @ 01-05-2016 à 02:28

Chatof, bonjour.

Pourquoi la tortue gagne-t'elle toujours dans mon algorithme ?

Pourriez-vous me dire où se trouve mon erreur ?


Bien que ce message ne m'est pas adressé, je te réponds.

Dans ton algo, on sort systématiquement du "TANT-QUE" avec i = 6

Même si on tire un 6 au dé en cours de route, tu mets 5 dans la variable i.
Mais comme cela correspond à i < 6, et donc on refait une boucle supplémentaire dans le "TANT-QUE". On ne sortira donc de cela qu'avec un i = 6.

La tortue gagnera donc à tous les coups avec ton algo.
-----
Si on tire un 6 au dé en cours ... il faut sortir de la boucle "Tant-Que" en imposant une valeur de i > 6 (par exemple 7 ou 8 ou ... 1995 ou ...) dans ta ligne 25.

Cela obligera alors à sortir du "tant que" avec une valeur de i différente de 6 ... et permettra de déclarer le lapin gagnant.

Posté par
bbomaths
re : Programme sur Algobox 01-05-16 à 10:49

J-P, bonjour et merci.

Je viens de comprendre mon erreur.

Plus habitué à des langages comme le C, Python, Perl ou Tcl/Tk, je viens de comprendre la structure de la boucle TANT QUE.

J'ai supposé de manière erronée (pourquoi, je ne sais pas) que la variable de test i était incrémentée automatiquement à la fin de boucle. Ce qui n'est pas le cas puisqu'il faut la faire évoluer par un calcul ad-hoc.

Je ferai plus attention la prochaine  fois...



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 !