Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas poster de réponses
[Réglé] Compter après une boucle
Auteur Message
achilles



Autorisation : Membre
Nb de messages : 2
Inscrit le : Dim 30 Nov 2014, 11:12
Posté le : Dim 30 Nov 2014, 11:18    

Bonjour,

J'ai un petit soucis de compréhension sur un exercice très simple je pense.

Je dois lancer deux dés 10 fois et additionner le résultat. Si la somme est juste j'affiche "oui" sinon "non".
Mon soucis est de compter à la fin de la boucle le nombre de "oui". Et ça fait deux heures que je cherche à stocker mon "oui" mais je ne trouve pas.
Tout ce que j'obtiens c'est que j'affiche la dernière somme des dés lancés.

Merci pour vos réponses

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 30 Nov 2014, 15:00    

Saches aussi que la ti82plus a toutes les caractéristiques d'une ti83plus et le port d'une ti84plus.

Si tu postais des tentatives nous verrions tes oublis.

Ta formulation de l'énoncé est trouble car tu ne décris pas explicitement quels termes sont sommés. J'imagine que chaque paire de dés est sommée sur elle-même, mais est-ce bien cela ? Par ailleurs tu n'as pas énoncé ce qui définit une somme juste. J'imagine que c'est une consigne saisie au début du programme.
J'imagine que les dés ont 6 faces.

Tu as besoin au moins d'une variable pour la consigne, d'une variable pour compter les conditions vraies, et d'un compteur de lancers. Mais quelques variables de plus rendront le problème plus clair.

Dois-je poster un algorithme ou puis-je coder directement ? Je coderai car dans ce cas aucune ambiguïté n'apparaît au codage.
Ce code est compatible ti82stats à ti84plus tout modèle.

Code
Prompt X
0->S // initialisation du compte
For(W,1,10  // 10 lancés de dé // W n'est qu'un compteur arbitraire
entAléat(1,6->A  // 1 dé à 6 faces
entAléat(1,6->B  // 1 autre dé à 6 faces
If A+B=X  // la somme est-elle égale à la consigne
S+1->S    // incrémente si la condition est VRAIE
End
Disp S  // affichage du nombre de conditions vraies

N'oublie pas que If sans Then ni Else n'est qu'un raccourcis utilisable pour une seule action conditionnée.

Le premier qui viendra me dire que "0->S:For(" se remplace par "Delvar SFor(", je le renverrai réviser les bugs du TI-basic. (ah, ma signature pointe déjà vers mon article. ) Et je lui montre aussi mon optimisation qui s'en moque.

Si quelqu'un veut une compatibilité ti82, il faut remplacer entAléat par un calcul sur rand/NbrAléat.
"1+6*rand->A"

Et pour des fans de l'abus d'optimisation dans mon genre, voici un code plus optimisé en quantité de code.
Il n'est pas forcément plus rapide, toujours les même problèmes.

Code
Prompt X
0
For(W,1,10
Ans+(X=somme(entAléat(1,6,2
End
Ans

Le troisième argument de entAléat n'existe pas dans une TI82 basique. Il faudra utiliser deux fois rand, quitte à factoriser les calculs ensuite.

Encore plus tordu :
Code
Prompt X
somme(suite(X=somme(entAléat(1,6,2)),W,1,10))

Pour les MathPrint :
Code
Prompt X
Sigma(X=somme(entAléat(1,6,2)),W,1,10)



----------------------
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 
 
achilles



Autorisation : Membre
Nb de messages : 2
Inscrit le : Dim 30 Nov 2014, 11:12
Posté le : Dim 30 Nov 2014, 15:45    

Merci beaucoup pour cette longue réponse. ++++1
Désolé pour le manque de clarté, je vais essayer me rattraper sur la suite. happy.gif

Je viens de comprendre comment opérer ce comptage mais il doit me manquer quelque chose.
En effet j'ai suivi tes conseils et fait cela sachant que je dois mentionner les éléments que j'ai rajouté :

Code
Prompt X
0->S // initialisation du compte
For(W,1,10  // 10 lancés de dé // W n'est qu'un compteur arbitraire
entAléat(1,6->A  // 1 dé à 6 faces
entAléat(1,6->B  // 1 autre dé à 6 faces
Disp A, B
input "SOMME=", X
If A+B=X  // la somme est-elle égale à la consigne
Then
Disp "VRAI
Else
Disp "FAUX
End
End



Mais c'est là que le problème intervient car je n'arrive pas à insérer le bout de code que permet de compter les "vrai" (S+1->S) car ça me donne des résultats erronés.

 Adresse email Haut de page Bas de page 
 
achilles



Autorisation : Membre
Nb de messages : 2
Inscrit le : Dim 30 Nov 2014, 11:12
Posté le : Dim 30 Nov 2014, 16:11    

En fait j'ai trouvé:

Code

0->S // initialisation du compte
For(W,1,10  // 10 lancés de dé // W n'est qu'un compteur arbitraire
entAléat(1,6->A  // 1 dé à 6 faces
entAléat(1,6->B  // 1 autre dé à 6 faces
Disp A, B
input "SOMME=", X
If A+B=X  // la somme est-elle égale à la consigne
Then
Disp "VRAI
S+1->S
Else
Disp "FAUX
End
End
disp S


Merci beaucoup linkakro pour ton aide et bon dimanche.

 Adresse email Haut de page Bas de page 
 
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas poster de réponses





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink