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
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
Vous ne pouvez pas poster de nouveaux sujets Vous ne pouvez pas répondre aux sujets Vous ne pouvez pas éditer vos messages Vous ne pouvez pas supprimer vos messages Vous ne pouvez pas joindre des fichiers