Partage
  • Partager sur Facebook
  • Partager sur Twitter

Vérification de données : Projet mastermind.

Sujet résolu
    1 novembre 2019 à 16:12:23

    Bonjour à tous,

    J'ai découvert les joies (ou pas) de la programmation il a de ça deux mois. Mon professeur nous a donné comme consigne de réaliser un mastermind basique. Cependant, j'ai besoin de votre aide car je me retrouve bloqué sans solution. Tout fonctionne pour le moment, mais il me manque une dernière chose : les valeurs qui s'affichent ne sont pas du tout celles attendues. 

    La phrase " vous avez ... chiffres bien placé et ... mal placé " est complètement fausse. Mais je n'arrive pas à comprendre pourquoi. Je bloque donc sur les conditions avec " if "... 

    Si quelqu'un pourrait m'éclairer je suis preneur. Merci beaucoup par avance.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int J1[4], J2[4];
        int x, y;
        int inutile, essai=0, bienP, malP ; //RAJOUTE POUR EFFECTUER UNE TRANSITION ENTRE J1/J2
    
     printf("Saisissez une combinaison de 4 chiffres : \n"); //SAISI DES DONNEES POUR LE JOUEUR 1
    
        for (x=0; x<4; x++)
        {
            scanf("%d", &J1[x]);
        }
    
    
    
    printf("Votre combinaison est : ""%d-%d-%d-%d\n\n", J1[0], J1[1], J1[2], J1[3]);
    printf("Maintenant, place au joueur 2, entrez 1 pour valider. \n"); // MOYEN POUR EFFACER LA CONSOLE
    scanf("%d", &inutile);
    system("cls");
    
       //ENTREE DES DONNEES PAR LE JOUEUR 2
        do
            {
                bienP = 0 ;
                essai = essai + 1; // RAJOUTE +1 ESSAI A CHAQUE TENTATIVE DU JOUEUR 2
    
    
                printf("Saisissez une combinaison en appuyant sur entree entre chaque chiffre :\n");
    
                for (y = 0; y<4; y++)
    
                    {
                     scanf("%d", &J2[y]);
                    }
                     printf("""%d-%d-%d-%d\n\n", J2[0], J2[1], J2[2], J2[3]);
    
    
    
    
                  if (J1[1]==J2[2] || J1[1] == J2[3]|| J1[1] == J2[0])
                     {
                       malP ++;
                     }
    
                  if (J1[2] == J2[1] || J1[2] == J2[3] || J1[2] == J2[0])
                       {
                       malP ++;
                     }
    
                  if (J1[3] == J2[0] || J1[3] == J2[1] || J1[3] == J2[2])
                   {
                       malP ++;
                     }
    
                  if (J1[0] == J2[1] || J1[0] == J2[2] || J1[0] == J2[3])
                      {
                       malP ++;
                     }
                       if ( J1[1] == J2[1] );
                                        {
                                            bienP = bienP + 1;
                                        }
                                   if ( J1[2] == J2[2] );
                                        {
                                            bienP = bienP + 1;
                                        }
                                   if ( J1[3] == J2[3] );
                                        {
                                            bienP = bienP + 1;
                                        }
                                   if ( J1[4] == J2[4] );
                                        {
                                            bienP = bienP + 1;
                                        }
    
    
    
    
    
    
    
    
                     printf("Vous avez %d chiffre(s) a la bonne place et %d chiffre(s) a la mauvaise place.\n", bienP, malP);
    
    
    
    
    
    
    
            }
            while ( J1[0] != J2[0] || J1[1] != J2[1] || J1[2] != J1[2] || J1[3] != J2[3] ) ;
    
            printf("Vous avez reussi en %d essai(s)", essai);
    
        return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      1 novembre 2019 à 16:35:58

      J'ai pas testé, mais il y a un soucis avec plusieurs de tes if il ne faut pas de point virgule après la condition !
      • Partager sur Facebook
      • Partager sur Twitter
        1 novembre 2019 à 17:33:16

        Ah oui en effet ! Erreur bête...

        Après quelques modifications j'obtiens le nombre correct de " coup " mal placé. 

        Cependant, mon problème maintenant réside sur les biens placés. Il m'en met automatiquement toujours 1 bien placé.

        Si vous arrivez à voir d'où viens mon erreur... Merci par avance

        • Partager sur Facebook
        • Partager sur Twitter
          1 novembre 2019 à 18:09:25

          Tu utilises mal les indices de tableaux: en C, un tableau de taille N a son indice qui va de 0 à N-1, pas de 1 à N (lignes 62 à 74)

          -
          Edité par edgarjacobs 1 novembre 2019 à 18:13:23

          • Partager sur Facebook
          • Partager sur Twitter

          On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

            1 novembre 2019 à 18:26:37

            Merci edgarjacobs, j'avais résolu mon problème. Je m'en étais rendu compte. 

            C'est vrai que l'indice commence à 0... 

            Merci pour vos réponses, désormais tout fonctionne :)

            • Partager sur Facebook
            • Partager sur Twitter

            Vérification de données : Projet mastermind.

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown