Poster un nouveau sujet Poster une réponse
Somme de 3 dés.
Auteur Message
Arch'Image
Invité
Posté le : Mar 01 Jui 2010, 18:31   Citer 

Bonjour à tous !

J'ai un programme en TI Basic à écrire.
On lance 3 dés numérotés 1 à 6 et on additionne la valeur de leur face supérieure.
Je dois calculer les probabilités pour chaque somme, comprises donc entre 3 et 18 soit 16 sommes différentes pour 216 issues possibles.
J'ai presque fini le programme mais je bloque sur la liste qui contient mes résultats et leur affichage.
Voici mon code :
(lIST c'est le 'l' des listes + le nom de ma liste : 'IST')

Code

:{0}->lIST         //création de la liste
:1->I              //création de l'indice pour naviguer dans la liste
:For(A,1,6,1)      //jet du 1er dé
:For(B,1,6,1)      //jet du 2nd dé
:For(C,1,6,1)      //jet du 3e dé
:I+1->I            //incrémentation de l'indice
:(A+B+C)->lIST     //ajout de la somme dans la liste
:End               //fin 3e dé
:End               //fin 2nd dé
:End               //fin 1er dé
:For(P,3,18,1)     //calcul de proba des 16 issues
:0->S              //(re)mise à 0 du nombre d'apparition de la somme
:For(N,2,217,1)    //navigation dans toute la liste
:If lIST(N)=P      //si la somme est celle comptabilisée
:S+1->S            //alors on incrémente le total
:End               //fin de la navigation
:Disp "PROBA DE",P //affichage
:Disp "=",S/216    //de la
:Pause             //réponse
:End               //fin du calcul des probas


Quand j'exécute le code, la calculatrice m'affiche :
{0 0 0 0 0 0 0 ...
Je comprends que ça m'affiche un 0 comme première valeur, mais ensuite on devrait obtenir 4, 5, 6, 7, 8, 4, 5, 6 ... qui sont les sommes normales obtenues par le lancer des 3 dés.
Même en affichant la liste avec un petit programme de navigation, il n'affiche qu'une suite de 0, mais qui est le nombre correcte de valeurs : 216 (=6^3).
De plus, il ne m'affiche aucun des deux Disp.

Je cherche donc à comprendre pourquoi le programme ne s'exécute pas correctement, optionnellement un code qui fonctionnerait.
Merci par avanche, Arch'ImAgE.

  Haut de page Bas de page 
 
patate007



Autorisation : Membre
Nb de messages : 103
Inscrit le : Mar 09 Fév 2010, 8:49
Posté le : Mar 01 Jui 2010, 18:44   Citer 

Tu oublis de mettre la case de ta liste dans la boucle avec la variable C winkle.gif


Code
:{0}->lIST
:1->I
:For(A,1,6,1)
:For(B,1,6,1)
:For(C,1,6,1)     
:I+1->I
:(A+B+C)->lIST  <== ICI ;)
:End
:End
:End
:For(P,3,18,1)
:0->S
:For(N,2,217,1)   
:If lIST(N)=P
:S+1->S
:End
:Disp "PROBA DE",P
:Disp "=",S/216
:Pause   
:End



Il faut que l'utilise ta variable I winkle.gif

Pour résoudre ce genre de problêmes, il faut que tu localises ton erreur (Ici entre la 1ère ligne et la 10ème). Ensuite tu penses comme le programme et tu t'immagines le chemin qu'il va faire. Tu pourras ainsi voir s'il ne manque pas quelque chose et par la même occasion enlever ce qu'il y a en trop winkle.gif

Ce que tu pourrais faire de malin, c'est de suprimmer le contenu de la liste inutile en fin de programme (il prend quand même plus de 1800 octets...). Tu trouvera la fonction utile dans STAT winkle.gif

Avec ma TI-82, Il n'y a que 99 cases dans chaques listes ... Donc impossible pour moi d'afficher tous les chiffres =/

Bonne journée ! cupsmiley.gif

----------------------
Joyeuse Pâques winkle.gif
 Adresse email Haut de page Bas de page 
 
Arch'ImAgE
Invité
Posté le : Mar 01 Jui 2010, 19:16   Citer 

Désolé, c'est une erreur de copie de ma calculatrice à mon ordianteur, j'ai oublié le (I).
Voici le code que j'ai sur ma calculatrice (vérifié 2 fois ><) :

Code

:{0}->lIST         //création de la liste
:1->I              //création de l'indice pour naviguer dans la liste
:For(A,1,6,1)      //jet du 1er dé
:For(B,1,6,1)      //jet du 2nd dé
:For(C,1,6,1)      //jet du 3e dé
:I+1->I            //incrémentation de l'indice
:(A+B+C)->lIST(I)  //ajout de la somme dans la liste
:End               //fin 3e dé
:End               //fin 2nd dé
:End               //fin 1er dé
:For(P,3,18,1)     //calcul de proba des 16 issues
:0->S              //(re)mise à 0 du nombre d'apparition de la somme
:For(N,2,217,1)    //navigation dans toute la liste
:If lIST(N)=P      //si la somme est celle comptabilisée
:S+1->S            //alors on incrémente le total
:End               //fin de la navigation
:Disp "PROBA DE",P //affichage
:Disp "=",S/216    //de la
:Pause             //réponse
:End               //fin du calcul des probas


Et là, juste pour voir, je relance le programme ... et ça marche ! godgrace.gif
Sauf que je n'ai rien changé :o
Bon, le calcul est un peu long, mais les résultats sont les bons.

Concernant la procédure de recherche d'erreurs, je suis habitué car je code aussi en C et en Python (et j'en fait des fautes ^^).
Néanmoins merci de ta réponse, surtout qu'elle a marché d'une façon inexplicable lol

Sujet résolu.

PS : il serait agréable de pouvoir utiliser le codage Unicode sur le forum, ce qui permettrait entre autres d'afficher de vrais flèches qui bugent en &#8594; ou bien des racines carrées comme &#8730; sans entrer dans le détail de toutes les lettres grecques. (voir si possibilité d'utilisation du langage Mathml par exemple)

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 02 Jui 2010, 0:07   Citer 

Je vous propose celui-ci
Il tient avec une liste de dimension seulement 18, et je l'immagine plus rapide.


Code
EffListe L1
18->dim(L1
For(A,1,6
For(B,1,6
For(C,1,6
L1(A+B+C)+1->L1(A+B+C)
End
End
End
For(W,3,18
Disp "PROBA DE",W
Pause L1(W)/216
End



----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes