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

C++ Discussion :

erreurs sur un programme de mastermind


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Points : 0
    Points
    0
    Par défaut erreurs sur un programme de mastermind
    dans le cadre de mes études, je dois programmer en C++ un mastermind.
    Il se trouve que j'ai des erreurs qui m'empêchent d'avancer..

    (je ne sais pas comment mieux vous présenter mon programme.. dsl )
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    #include <cstdlib>
    #include <iostream>
     
    using namespace std;
     
     
    void aleatoire( int Tpassif[] )
    {
         int i,;
         srand (time (NULL) );
         for (i=0; i<4; i++)
             {
             Tpassif [i]=rand()%9;
             }
    }
     
     
     
    int main(int argc, char *argv[])
    {
     
        /*déclarations des variables*/
        int Tpassif[3], Tactif[3], blanc;
        int i=0, rouge=0, j=0;
     
        aleatoire (Tpassif);
        cout<<"Jeu du MasterMind\n\n\n";
        cout<<"l'ordinateur a choisit ses couleurs, essaye de les trouver\n\n"<<"vos couleurs sont : \n";
        for (i=0; i<4; i++)
            {
            cin>>Tactif[i];
            }
     
        cout<<"couleurs choisies : ";
        for (i=0; i<4; i++)
            cout<<Tactif[i];                                                        /*indique les couleurs choisies par le joueur actif*/
        cout<<"\n\n";
     
     
        for (i=0; i<4; i++)
        {
            if (Tpassif[i]==Tactif[i])
            rouge=rouge++;
     
            for(j=0; j<4; j++)
            {
                     if ((i!=j) && (Tactif[i] == Tpassif[j]))
                     blanc=blanc++;
            }
        if (rouge!=0)
           cout<<"nombre de pions rouge : "<<rouge;
        if (blanc!=0)
           cout<<"nombre de pions blancs : "<<blanc;
        if (rouge==0 && blanc==0)
           cout<<"aucune couleur ne corresponds";
     
     
     
     
     
     
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    }

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    Ça nous aiderait pas mal si tu nous décrivais le type d'erreur : compil ? link ? exec ?

    Apparemment Tpassif et Tactif sont des tableaux de 3 éléments mais tu les parcoures avec une boucle for allant de 0 à 3 ... donc 4 indices. La dernière itération doit logiquement provoquer une SEGFAULT.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    nous ne sommes pas là pour réaliser les devoirs des étudiants.
    Aussi, c'est à toi d'identifier les erreurs, et nous les présenter, en aucun cas nous allons les deviner et debuguer le programme pour toi.

    Maintenant:
    - il est inutile de déclarer i et j en début de bloc, les déclarer dans les for où elles sont nécessaires est bien mieux
    - blanc = blanc++, comprends-tu cette ligne pour l'avoir écrite plusieurs fois ?
    - les index des tableaux sont 0-based
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Points : 0
    Points
    0
    Par défaut
    Le problème est lors de la comparaison
    Une fois exécute
    Il me compte tout le temps 2686840 Blancs..
    Alors qu'il devrait m'en donner entre 1 et 4, je ne vois pas de quoi cela provient

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    Ligne 24, blanc devrait être initialisé à zéro.
    Et ça m'étonnerait que l'accolade ligne 65 soit au bon endroit.

    Ce code est un vrai torchon

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    Bonjour,

    Juste comme ça, du C++ sans objet, ça s'appel du C :/

    Ensuite tous coder dans le main ....

    les méthodes et les fonctions te permettent d'avoir un code propre et découpé tu devrais commencer par ça.

    Ensuite tu as un tableau [3] et tu regarde dans 4 case y a pas un soucis qlq part?

    Et oui blanc n'est pas initialisé.

    Blanc++ revient a écrire blanc= blanc + 1 ou blanc += 1
    C'est une incrémentation de ta variable.

  7. #7
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Citation Envoyé par jouana Voir le message
    Juste comme ça, du C++ sans objet, ça s'appel du C :/
    Non. Pas du tout.

    Mais il y a "sans objet maison" et "sans objet standard"

    Pourquoi devrait-il s'embeter avec des objets, alors que visiblement, il est encore en apprentissage des bases (tableaux et boucles, syntaxe générale)
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  8. #8
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par jouana Voir le message
    Bonjour,

    Juste comme ça, du C++ sans objet, ça s'appel du C :/
    Absolument pas...

    Le C++ est un langage multi paradigme qui permet aussi le paradigme purement séquentiel

    On peut estimer qu'il est dommage de ne pas profiter de l'ensemble des possibilités qu'il offre, dont l'orienté objet, mais ce n'est pas une raison pour en faire une obligation

    C'est peut etre une des différences majeures entre C++ et java ou C# qui tendent à obliger l'utilisation du paradigme objets, mais, après tout, quelle raison aurait on d'obliger le développeur à créer une classe Math (par exemple) ne contenant que des fonctions statiques comme sinus et cosinus, multiply ou divide

    Non, ce qui fait que l'on code en C++ plutôt qu'en C, même si l'on n'utilise pas le paradigme orienté objets, c'est surtout que l'on profite des possibilités issues du C++ (comme cin ou cout, new et delete sans aller beaucoup plus loin ) plutôt que des possibilités équivalentes issues du C

    Par contre, je suis d'accord avec toi pour le reste de ton intervention
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/04/2012, 18h25
  2. Réponses: 11
    Dernier message: 17/09/2011, 17h25
  3. erreur sur programme C
    Par lequent82 dans le forum C
    Réponses: 4
    Dernier message: 30/03/2009, 21h07
  4. [JXL] Erreur ArrayIndexOutOfBoundsException sur premier programme
    Par new dotnet(c#) dans le forum Documents
    Réponses: 1
    Dernier message: 21/12/2008, 11h29
  5. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

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