IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages Discussion :

Problème de logique dans un Mastermind [Débutant]


Sujet :

Langages

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 2
    Par défaut Problème de logique dans un Mastermind
    Bonjour à tous,

    Etant récemment tombé dans le C# en tant qu'alternant dans une entreprise, j'ai eu comme dernier exercice : faire un mastermind.

    C'est un mastermind avec des chiffres et non des couleurs mais le principe est le même

    Je suis bloqué avec ma logique et je n'arrive pas à en sortir, c'est pourquoi je viens chercher un petit coup de pouce

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    class Program
        {
            static void Main(string[] args)
            {
                Mastermind();
                Console.ReadKey();
            }
     
            private static void Mastermind()
            {
                int compteurBon = 0;
                int compteurMalPlace = 0;
                int compteurFaux = 0;
                int[] codeATrouver = new int[4] {};
                int[] codeEntre = new int[4] {};
                int x = '.';
     
                for (int i = 0; i < codeATrouver.Length; i++)
                {
                    if (codeEntre[i] == codeATrouver[i])
                    {
                        compteurBon += 1;
                        codeEntre[i] = x;
                        codeATrouver[i] = x;
                    }
                }
                for (int i = 0; i < codeATrouver.Length; i++)
                {
                    if (codeEntre[i] == codeATrouver[i])
                    {
                        compteurBon += 1;
                        codeEntre[i] = x;
                    }
                    for (int j = 0; j < codeATrouver.Length; j++)
                    {
                        if (codeATrouver[i] == codeEntre[j])
                        {
                            compteurMalPlace += 1;
                            Console.WriteLine(compteurMalPlace);
                        }
                    }
                }
                compteurFaux = codeATrouver.Length - compteurBon - compteurMalPlace;
                Console.WriteLine("Compteur Bon : " + compteurBon + "\nCompteur bon mais mal placé : " + compteurMalPlace + "\nCompteur faux : " + compteurFaux);
            }
        }
    Je précise que tous les éléments qui me sont autorisés sont les suivants : boucles, tableaux, méthodes.

    Je bloque car le programme doit gérer les exceptions (ex : la combinaison choisie est 0 0 5 0 et celle entrée est 5 5 5 5, cela doit affiche 1 bon et 3 faux ou bien combinaison choisie 0 5 5 0 et celle entrée 5 7 5 5, cela doit afficher un bon, un bon mal placé et 2 faux)

    J'aimerai vraiment réussir à comprendre ce problème.

    Je vous remercie d'avance pour vos réponses

  2. #2
    Membre expérimenté
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Par défaut
    Bonjour,

    Pour commencer, utilise les balises [ CODE][ /CODE] à la place de [ QUOTE] pour mettre en forme ton code correctement.

    Ton Main :
    - Tu appelle ta méthode de vérification puis tu demande à l'utilisateur de saisir 1 caractère et c'est fini => tu croix pas qu'il y a au moins 1 problème là ?
    -> Commence par faire en sorte que l'utilisateur puisse saisir les caractères avant de lancer la vérification (suivant la demande, caractère par caractère ou les 4 en une seule fois)
    -> Ensuite, fais en sorte que l'utilisateur puisse faire plusieurs saisies et pas qu'une seule (en nombre de caractères et en nombres de solutions).
    -> L'utilisateur peut-il saisir absolument tous les caractères ?
    Ta méthode Mastermind : Bon je l'ai pas trop détaillé car difficile à lire, mais je pense que les résultats ne correspondront pas à tes exemples, sans parler du fait qu'elle n'a aucune idée de ce que l'utilisateur à pu saisir.

    Voilà, je te laisse chercher un peu sinon c'est pas drôle, tu as le droit d'utiliser la touche F1 et le débogage pour t'aider.
    Concentre toi sur la saisie de l'utilisateur pour commencer, et ensuite, une fois que ça tourne, tu pourra voir la méthode de vérification.

    Bonne continuation.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 2
    Par défaut
    Bonjour,

    Merci pour le tips des balises code, j'ai fait le post hier un peu à la va vite à la fin de ma journée de cours de C donc désolé pour les éléments manquants. En fait, plutôt que de devoir faire le jeu à chaque fois, j'avais renseigné dans les deux tableaux des valeurs de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    private static void Mastermind()
            {
                int compteurBon = 0;
                int compteurMalPlace = 0;
                int compteurFaux = 0;
                int[] codeATrouver = new int[4] {0, 5, 5, 0};
                int[] codeEntre = new int[4] {5, 7, 5, 5};
                int x = '.';
     
                for (int i = 0; i < codeATrouver.Length; i++)
                {
                    if (codeEntre[i] == codeATrouver[i])
                    {
                        compteurBon += 1;
                        codeEntre[i] = x;
                        codeATrouver[i] = x;
                    }
                }
                for (int i = 0; i < codeATrouver.Length; i++)
                {
                    if (codeEntre[i] == codeATrouver[i])
                    {
                        compteurBon += 1;
                        codeEntre[i] = x;
                    }
                    for (int j = 0; j < codeATrouver.Length; j++)
                    {
                        if (codeATrouver[i] == codeEntre[j])
                        {
                            compteurMalPlace += 1;
                            Console.WriteLine(compteurMalPlace);
                        }
                    }
                }
                compteurFaux = codeATrouver.Length - compteurBon - compteurMalPlace;
                Console.WriteLine("Compteur Bon : " + compteurBon + "\nCompteur bon mais mal placé : " + compteurMalPlace + "\nCompteur faux : " + compteurFaux);
            }
    Mais je pense avoir trouver où se situait l'erreur, je l'ai corrigée chez moi et ça avait l'air fonctionnel. Je verrai bien la correction jeudi

    Merci pour la réponse.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Par défaut
    Ok, oublions la saisie de l'utilisateur.

    Je sais pas pour toi, mais chez moi ton code en l'état me donne 2 bon, 3 mal placés et -1 faux, on est loin du résultat attendu.

    - Déjà, pour les 2 bon, vu que tu fais 2 fois la boucle et la vérification, c'est une peu normal.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (int i = 0; i < codeATrouver.Length; i++)
                {
                    if (codeEntre[i] == codeATrouver[i])
    - Pour les mal placés : même si il est bon, tu recherche si il est mal placé donc comptabilisé 2 fois.
    Ensuite, tu ne conserve pas ce que tu as déjà trouvé (bon et mal placé), donc chaque chiffre est tout le temps comparé d’où les 3 mal placés.
    - Pour finir, ton 'x', heu, à moins que tu sois un fétichiste du nombre 46 , je vois pas trop à quoi il sert (enfin si mais ça marche pas bien, je trouve ).

    Allez, montre nous un code fonctionnel sans attendre que quelqu'un d'autre te le fournisse.

    Bonne continuation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de logique dans une boucle
    Par volubiliss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/03/2011, 11h57
  2. Problème de logique dans ce test conditionnel
    Par Gunner4902 dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2007, 14h38
  3. Problème de logique dans des boucles "If"
    Par bilou95 dans le forum Langage
    Réponses: 3
    Dernier message: 16/10/2007, 11h05
  4. problèmes de logique ! ne fait pas dans l'ordre.
    Par djibb dans le forum Tkinter
    Réponses: 3
    Dernier message: 29/05/2007, 17h06
  5. Problème de lecteur logique dans Windows XP
    Par olosta dans le forum Windows XP
    Réponses: 1
    Dernier message: 04/05/2006, 17h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo