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 !
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 ?
Bonjour
As tu utilisé un moteur de recherche avec les mots
Algorithme lièvre tortue
Tu devrais trouver ce que tu cherches
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é.
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
Tu as vraiment cherché avec
Si le 6 sort, alors le lièvre gagne la partie, sinon la tortue avance d'une case + algorithme
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
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.
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 !
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
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...
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.
Bonjour bbomaths
Avec votre programme c'est la tortue qui gagne toujours.
Bonjour J-P
Programme sur Algobox
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.
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.
Chatof, bonjour.
Pourquoi la tortue gagne-t'elle toujours dans mon algorithme ?
Pourriez-vous me dire où se trouve mon erreur ?
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 :