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 :

Problème d'affichage sur un mastermind en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Par défaut Problème d'affichage sur un mastermind en c
    Bonjour la communauté,

    J’aimerai avoir un peu d'aide sur un problème récurrent de mon code.
    Ma fonction saisi_comb() me permet d'entrer la combinaison supposée par le joueur.
    Cette combinaison est en faite un nombre (sous forme d'une suite d'entier) qui sera découpé pour vérifier s'il correspond a la combinaison initiale (j'aurais pus utiliser une chaîne de caractères a la place mais j'ai pris un autre choix de conception).
    Pour découper mon nombre je récupère la partie d'une division.

    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
    long saisi_comb(long* tablo)
    {
        cout<<"Saisisser la combinaison suppose (entier)"<<endl;
        int combinaison;
        int return_val = 1;
        int rang=0;
        cin>>combinaison;
        int temp=0;
     
        if ( (combinaison/pow(10,TAI-1))>1 && (combinaison/pow(10,TAI))<1 )  //on verifit que combinaison comporte bien TAI nombres
        {
            for (int cpt = TAI-1; cpt>=0; cpt--)
            {
                if (return_val==1) //tant que les condition ci-dessous sont vraie
                {
                    temp = combinaison/pow(10,cpt); //on recupere la partie entiere de la division
                    if (temp >0 && temp<9)
                    {
                        cout<<"      combinaison (in function 2) ["<<cpt<<"] : "<<combinaison<<endl;
                        tablo[rang]=temp;
                        //cout<<"        -->temp*pow(10,cpt) : "<<temp*pow(10,cpt)<<endl;
                        //cout<<"           -->combinaison - (temp*pow(10,cpt)) = "<<combinaison<<" - "<<(temp*pow(10,cpt))<<" = "<<combinaison - (temp*pow(10,cpt))<<endl;
                        combinaison = combinaison - (temp*pow(10,cpt));  //pourquoi pour cpt=3 il soustrait -1 au dernier nombre de la chaine. Pourquoi effectue t'il le calcul suivant : combinaison - (temp*pow(10,3)) -1
                        cout<<"      combinaison (in function 2)  1 : "<<combinaison<<endl;
                        rang++;
                    }
                    else
                    {
                        return_val= 0 ;
                    }
                }
            }
     
        }
        else
        {
            return_val=0;
            //cout<<"condition 1 fausse"<<endl;
        }
     
        return return_val;
    }
    Par contre l'invite de commande affiche :

    Combi initiale:
    7.1.2.6.8
    Saisisser la combinaison suppose (entier)
    71268

    combinaison (in function 2) [4] : 71268
    combinaison (in function 2) 1 : 1268

    combinaison (in function 2) [3] : 1268
    combinaison (in function 2) 1 : 267

    combinaison (in function 2) [2] : 267
    combinaison (in function 2) 1 : 67

    combinaison (in function 2) [1] : 67
    combinaison (in function 2) 1 : 7

    combinaison (in function 2) [0] : 7
    combinaison (in function 2) 1 : 0
    J'arrive pas a comprendre pourquoi lorsque le compteur cpt = 3, j'ai ma chaîne combinaison soustraite de un en trop .
    Pourquoi se passe t'il :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    combinaison = combinaison - (temp*pow(10,3)) - 1;
    J'utilise Code::Block 10.05.

    Merci pour votre aide

    Kosen

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Je pense surtout que tu que tu recherches à faire trop compliqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    unsigned int nombreSaisie;
    unsigned int valeurTmp = nombreSaisie;
     
    for(int i = 0; i < nbElement ; ++i)
    {
               tabCombinaisonSaisie[i] = valeurTmp%10;
               //ou
               tabCombinaisonSaisie[nbElement-i-1] = valeurTmp%10;
     
               valeurTmp /= 10;
    }
    Sinon la condition (temp >0 && temp<9) me semble étrange, pourquoi ne pas accepter 0 et 9 dans les valeurs de ton mastermind ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Par défaut
    edit : Sa marche merci, je sais pas d’où venais l'erreur

    Merci pour ta réponse, je teste tout ça.

    Sinon la condition me semble étrange, pourquoi ne pas accepter 0 et 9 dans les valeurs de ton mastermind ?
    Les valeurs générées seront comprise entre 1 et 8.

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

Discussions similaires

  1. Problème d'affichage sur IE
    Par Neuromancien2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 26/07/2006, 10h14
  2. Gros problèmes d'affichage sur écran 16/9
    Par slylafone dans le forum C++Builder
    Réponses: 7
    Dernier message: 25/07/2006, 09h33
  3. Problème d'affichage sur formulaire
    Par PAUL87 dans le forum Access
    Réponses: 3
    Dernier message: 27/06/2006, 23h08
  4. Problème d'affichage sur un écran 16/9ème
    Par kurul1 dans le forum C++Builder
    Réponses: 2
    Dernier message: 23/01/2006, 11h51
  5. [Swing]Problème d'affichage sur un JTree
    Par tomca dans le forum Composants
    Réponses: 4
    Dernier message: 19/01/2006, 10h41

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