Énigmatique Xunor http://xunor.free.fr/forum/ |
|
La porte http://xunor.free.fr/forum/viewtopic.php?f=10&t=9 |
Page 4 sur 4 |
Auteur: | Xunor [ Dim Jan 17, 2010 13:08 ] |
Sujet du message: | |
raph04 a écrit: Bonjour,
... Merci d'avance parce que là ça va m'empêcher de dormir Salut, aucune erreur de compréhension mais 2 grosses erreurs de programmation 1) Ton troisième test devrait porter sur les portes 0 et 1 (et pas 0 et 2) Ceci n'est pas l'erreur qui a le plus de conséquence ... 2) Tu as enchainé les conditionnelles sans faire de "else" du coup le résultat ne correspond pas à ce que tu veux car tu réaffecte la variable porteJoueur donc il y a 2 solutions : soit tu utilise une autre variable genre "porteJoueurFinale" soit tu utilise des "else" solution 1 : Code: Private Sub CommandButton1_Click() Dim nbessai, essaigagnant As Integer Dim porteJoueur, porteGagnante, portePresentateur, porteJoueurFinale As Integer 'On initialise les variable 'Le nombre d'essaie est choisi par l'utilisateur nbessai = Range("B1").Value 'Le nombre d'essaie gagnant est a 0 au début essaigagnant = 0 'boucle sur le nombre d'essaie souhaité For I = 1 To nbessai 'La porte gagnante est defini à la base (entre 0,1 et 2) porteGagnante = Int(3 * Rnd) 'Le joueur choisi une porte au début (entre 0,1 et 2) porteJoueur = Int(3 * Rnd) 'Tant que la porte du présentateur est celle du candidat ou la gagnant, on en prend une autre Do portePresentateur = Int(3 * Rnd) Loop While (portePresentateur = porteGagnante) Or (portePresentateur = porteJoueur) 'On fait changer au joueur de porte 'Si la porte 0 est la porte ni choisi ni montré, on l'affecte au joueur If ((portePresentateur = 2) And (porteJoueur = 1)) Or ((portePresentateur = 1) And (porteJoueur = 2)) Then porteJoueurFinale = 0 End If 'Si la porte 1 est la porte ni choisi ni montré, on l'affecte au joueur If ((portePresentateur = 0) And (porteJoueur = 2)) Or ((portePresentateur = 2) And (porteJoueur = 0)) Then porteJoueurFinale = 1 End If 'Si la porte 2 est la porte ni choisi ni montré, on l'affecte au joueur If ((portePresentateur = 0) And (porteJoueur = 1)) Or ((portePresentateur = 1) And (porteJoueur = 0)) Then porteJoueurFinale = 2 End If 'Si la porte du joueur est la porte gagnante on ajoute 1 au essaie gagnant If porteJoueurFinale = porteGagnante Then essaigagnant = essaigagnant + 1 End If Next I Range("B3").Value = essaigagnant End Sub solution 2 : Code: Private Sub CommandButton1_Click()
Dim nbessai, essaigagnant As Integer Dim porteJoueur, porteGagnante, portePresentateur As Integer 'On initialise les variable 'Le nombre d'essaie est choisi par l'utilisateur nbessai = Range("B1").Value 'Le nombre d'essaie gagnant est a 0 au début essaigagnant = 0 'boucle sur le nombre d'essaie souhaité For I = 1 To nbessai 'La porte gagnante est defini à la base (entre 0,1 et 2) porteGagnante = Int(3 * Rnd) 'Le joueur choisi une porte au début (entre 0,1 et 2) porteJoueur = Int(3 * Rnd) 'Tant que la porte du présentateur est celle du candidat ou la gagnant, on en prend une autre Do portePresentateur = Int(3 * Rnd) Loop While (portePresentateur = porteGagnante) Or (portePresentateur = porteJoueur) 'On fait changer au joueur de porte 'Si la porte 0 est la porte ni choisi ni montré, on l'affecte au joueur If ((portePresentateur = 2) And (porteJoueur = 1)) Or ((portePresentateur = 1) And (porteJoueur = 2)) Then porteJoueur = 0 'Si la porte 1 est la porte ni choisi ni montré, on l'affecte au joueur ElseIf ((portePresentateur = 0) And (porteJoueur = 2)) Or ((portePresentateur = 2) And (porteJoueur = 0)) Then porteJoueur = 1 'Si la porte 2 est la porte ni choisi ni montré, on l'affecte au joueur ElseIf ((portePresentateur = 0) And (porteJoueur = 1)) Or ((portePresentateur = 1) And (porteJoueur = 0)) Then porteJoueur = 2 End If 'Si la porte du joueur est la porte gagnante on ajoute 1 au essaie gagnant If porteJoueur = porteGagnante Then essaigagnant = essaigagnant + 1 End If Next I Range("B3").Value = essaigagnant End Sub J'espère avoir résolu tes problèmes de sommeil |
Page 4 sur 4 | Heures au format UTC + 2 heures |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |