Énigmatique Xunor • Afficher le sujet - La porte

Cette page en français This page doesn't exist in English
Énigmatique Xunor
Le Forum
Nous sommes le Ven Nov 17, 2017 23:15

Heures au format UTC + 2 heures




Poster un nouveau sujet Répondre au sujet  [ 46 messages ]  Aller à la page Précédente  1, 2, 3, 4
Auteur Message
 Sujet du message:
MessagePosté: Dim Jan 17, 2010 13:08 
Hors ligne
Le patron
Avatar de l’utilisateur

Inscription: Ven Juin 22, 2007 14:20
Messages: 81
raph04 a écrit:
Bonjour,
...
Merci d'avance parce que là ça va m'empêcher de dormir :P

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


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 46 messages ]  Aller à la page Précédente  1, 2, 3, 4

Heures au format UTC + 2 heures


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


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

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com