Bonjour, j'ai un devoir maison à faire sur Algobox, mais j'ai un peu de mal à faire l'algorithme, voici l'énoncé et l'algorithme que j'ai essayer de faire :
Une martingale est une méthode censée augmenter les chances de gagner au jeu, ou en tout cas, de limiter les pertes. On s'intéresse au jeu de roulette et on suppose que l'on réalise une mise simple. On a donc une chance sur 37 de gagner, et dans ce cas on remporte 35 fois la mise, plus la mise.
On suit la méthode dite de la martingale « classique » : on mise un euro. Si on gagne, on s'arrête, si on perd, on recommence en doublant la mise. On s'arrête au premier tirage gagnant.
1-Ecrire un programme permettant de simuler cette façon de jouer. Faire afficher en sortie le nombre de partie jouées, la somme totale misée et le gain global
2- Produire un algorithme qui simule plusieurs parties. Que penser de l'intérêt pratique de cette martingale ?
Oups désolé, je ne peux pas éditer donc je fais un nouveau message...
FONCTIONS_UTILISEES
VARIABLES
mise EST_DU_TYPE NOMBRE
nombre_parties EST_DU_TYPE NOMBRE
somme_totale EST_DU_TYPE NOMBRE
nombretiree EST_DU_TYPE NOMBRE
gain_global EST_DU_TYPE NOMBRE
choix EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
mise PREND_LA_VALEUR 1
somme_totale PREND_LA_VALEUR 0
gain_global PREND_LA_VALEUR 0
nombre_parties PREND_LA_VALEUR 0
TANT_QUE (gain_global<0) FAIRE
DEBUT_TANT_QUE
LIRE choix
nombretiree PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,37)
SI (choix==nombretiree) ALORS
DEBUT_SI
gain_global PREND_LA_VALEUR mise*35+mise
nombre_parties PREND_LA_VALEUR nombre_parties+1
FIN_SI
SINON
DEBUT_SINON
gain_global PREND_LA_VALEUR gain_global-mise
mise PREND_LA_VALEUR mise*2
FIN_SINON
somme_totale PREND_LA_VALEUR mise+somme_totale
FIN_TANT_QUE
AFFICHER somme_totale
AFFICHER gain_global
AFFICHER nombre_parties
FIN_ALGORITHME
Salut, la première fois que tu exécutes l'algorithme et que tu passes sur
TANT_QUE (gain_global<0) FAIRE
gain_global vaut 0 donc il n'exécute aucune des instructions de la boucle et saute directement à AFFICHER somme_totale donc ton algorithme va afficher 0 0 0
rectifie ça, mais sinon il est pas mal. (mais on voit que tu ne l'as pas vraiment testé)
y'a de l'idée.
Cependant plusieurs anomalies :
...........................................................................
gain_global PREND_LA_VALEUR 0
TANT_QUE (gain_global<0) FAIRE
--------------- On ne passe jamais dans le boucle !!!
...........................................................................
nombre_parties PREND_LA_VALEUR 0
TANT_QUE (gain_global<0) FAIRE
.....
SI (choix==nombretiree) ALORS
....
nombre_parties PREND_LA_VALEUR nombre_parties+1
--------------- On n'incrémente le nombre de partie que quand on gagne !!!
D'accord, j'ai essayer de rectifier cela mais j'ai toujours le soucis du gain global que je n'arrive pas à résoudre :
FONCTIONS_UTILISEES
VARIABLES
mise EST_DU_TYPE NOMBRE
nombre_parties EST_DU_TYPE NOMBRE
somme_totale EST_DU_TYPE NOMBRE
nombretiree EST_DU_TYPE NOMBRE
gain_global EST_DU_TYPE NOMBRE
choix EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
choix PREND_LA_VALEUR 2
mise PREND_LA_VALEUR 1
nombre_parties PREND_LA_VALEUR 0
gain_global PREND_LA_VALEUR 0
somme_totale PREND_LA_VALEUR 0
POUR nombre_parties ALLANT_DE 1 A 100
DEBUT_POUR
TANT_QUE (gain_global<0) FAIRE
DEBUT_TANT_QUE
LIRE choix
nombretiree PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,37)
SI (nombretiree==2) ALORS
DEBUT_SI
gain_global PREND_LA_VALEUR mise*35+mise+gain_global
FIN_SI
SINON
DEBUT_SINON
mise PREND_LA_VALEUR mise*2
FIN_SINON
FIN_TANT_QUE
FIN_POUR
somme_totale PREND_LA_VALEUR mise+somme_totale
AFFICHER* somme_totale
AFFICHER* gain_global
AFFICHER* nombre_parties
FIN_ALGORITHME
J'ai défini un nombre de parti de 100, cependant quand je test l'algorithme j'obtiens :
1
0
101
Donc 1 somme totale, 0 gain et 101 parties.
Je ne suis pas très très fort en algorithme, c'est mon deuxième ^.^
ne mélange pas une boucle TantQue avec une boucle Pour, une seule suffit !
je te l'ai corrigé :
VARIABLES
mise EST_DU_TYPE NOMBRE
nombre_parties EST_DU_TYPE NOMBRE
somme_totale EST_DU_TYPE NOMBRE
nombretiree EST_DU_TYPE NOMBRE
gain_global EST_DU_TYPE NOMBRE
choix EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
nombre_parties PREND_LA_VALEUR 0
mise PREND_LA_VALEUR 1
nombre_parties PREND_LA_VALEUR 0
gain_global PREND_LA_VALEUR 0
TANT_QUE (gain_global==0) FAIRE
DEBUT_TANT_QUE
LIRE choix
nombretiree PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,37)
nombre_parties PREND_LA_VALEUR nombre_parties+1
somme_totale PREND_LA_VALEUR somme_totale+mise
SI (nombretiree==choix) ALORS
DEBUT_SI
gain_global PREND_LA_VALEUR gain_global+35*mise
FIN_SI
SINON
DEBUT_SINON
mise PREND_LA_VALEUR mise*2
FIN_SINON
FIN_TANT_QUE
AFFICHER* somme_totale
AFFICHER* gain_global
AFFICHER* nombre_parties
FIN_ALGORITHME
Globalement je trouve ca moins bien que tout à l'heure.
Et puis il serait plus productif de faire un truc qui marche en répondant à 1/
avant de vouloir faire quelque chose pour répondre à 2/
Oui, je fais un algorithme pour une partie puis j'analyse et je fais pareil mais avec plusieurs parties (j'ai défini 100 parties)
oui mais tu devrais partir du mien et l'entourer par un boucle Pour parce qu'il y avait pas mal d'erreurs dans le tien.
D'accord je vais faire ça merci, cependant j'ai testé l'algorithme et quand j'entre le choix par exemple 2, ça me redemande d'entrer un choix et ça à l'infini, je ne sais pas si c'est fait exprès, j'ai regarder un peu l'algorithme et je ne trouve pas l'erreur (si ça en est une)
ben oui on te demande la valeur que tu choisis à chaque fois.
donc c'est long avant de trouver un numéro gagnant.
remplace LIRE choix par choix PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,37)
et tu n'auras plus à rentrer les nombres que tu choisis.
Okay c'est bon merci !
Petite question, en soie je n'ai pas besoin de faire un autre algorithme pour plusieurs parties car celui-ci simule déjà un nombre de partis aléatoire ?
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :