Condition qui se mette toute seul

Condition qui se mette toute seul - C - Programmation

Marsh Posté le 14-01-2011 à 23:27:18    

Bonjour
 
J'aurais un souci , je voulais faire un mini jeu de master-mind
 
//nbreMaster un tab de 5 case ou chaque case est un int choisi aleatoirement entre 1 et 8 , nbreEntree un tab de 5 case ou je recupere les char 1 a 1 de l'utilisateur en leur retrenchant 48 pour passer de l'ASCI a un chiffre numerique
 
int nbreMaster[5], nbreEntree[5] = {0};
 
int bienPlace , malPlace = 0;
 
//si j'essay de tester l'galité ca deconne
 
if (nbreEntree[0] == nbreMaster[0])
        {
            bienPlace = 7;
        }
 
 
    else
    {
        printf("bzzzzzzzzzzzz" );
    }
 
Je ne comprends pas quand je teste ca , si l'égalité est FAUSSE bienPlace est égale a 7 et le printf s'effecue quand même et quand l'égalité est vrai bienPlace vaut bien 7, le printf se fait pas, mais si j'essaye de remplacer = 7 par un ++ là, ca reste a zero est les problème s'enchaine quand je transforme ca en boucle pour passé en revu lé 5 case du tableau
 
Dans quelle circonstance, ça se peut qu'il rentre dans la condition alors qu'elle n'est pas vrais? les printf sont supérieures est sont tout le temps exécuté?
 
Merci


Message édité par deaphroat le 14-01-2011 à 23:28:02
Reply

Marsh Posté le 14-01-2011 à 23:27:18   

Reply

Marsh Posté le 14-01-2011 à 23:43:24    

Poste tout ton code parce que c'est pas avec ce que tu as mis qu'on va déterminer l'erreur qui ne semble pas du tout être ici :o


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 14-01-2011 à 23:46:22    

As tu poste tout ton code (une boucle par exemple)? car ce code

Code :
  1. if (nbreEntree[0] == nbreMaster[0]) {
  2.     bienPlace = 7;
  3. }
  4. else {
  5.     printf("bzzzzzzzzzzzz" );
  6. }
 

te donnera soit "bienPlace = 7", soit le printf, mais pas les deux. Il n'y a pas de superiorite ici !!!!

 

encore une fois, je pense que tu n'as pas tout poste, mais initialises-tu "bienPlace" ? car sur ce que tu as poste, ce n'est pas le cas.


Message édité par mr simon le 14-01-2011 à 23:50:57
Reply

Marsh Posté le 15-01-2011 à 00:08:39    

Ca serait en effet pas mal d'avoir le contexte.
 
Fais gaffe quand tu écris ça :
 

Code :
  1. int nbreMaster[5], nbreEntree[5] = {0};


 
C'est l'équivalent de ça :
 
 

Code :
  1. int nbreMaster[5];
  2. int nbreEntree[5] = {0};


 
Et donc "nbreMaster" n'est pas initialisé.

Reply

Marsh Posté le 15-01-2011 à 01:26:11    

#include <stdlib.h>
#include "master.h"
 
 
int main()
{
    srand(time(NULL));
 
    printf("MASTER\n\n" );
 
    //L'ordi choisit un nbreentre 11111 et 88888
    int nbreMaster[5], nbreEntree[5] = {0};
    int bienPlace , malPlace = 0;
    int i, j, k = 0 ;
    int *poinNbreEntree = nbreEntree;
    int *poinBienPlace = &bienPlace;
    int *poinMalPlace = &malPlace;
    aleaNbre(nbreMaster);
 
    printf("Les regles sont simple, entree 5 chiffres different : " );
 
    lireCaractere(poinNbreEntree);
 
    parcoursTabInt(nbreMaster, 5);printf("\n" );
    parcoursTabInt(nbreEntree, 5);
 
    //compareMasEntre ( *nbreMaster, *nbreEntree, *poinBienPlace, *poinMalPlace );
 
    if (nbreEntree[0] == nbreMaster[0])
        {
            bienPlace=7;
        }
 
 
    else
    {
        printf("bzzzzzzzzzzzz" );
    }
 
 
        printf("\n\n nbreEntree :%d,,nbreMaster : %d\n\n", nbreEntree[0], nbreMaster[0] );
 
 
 
    printf("\n\nil y a %d bien place et %d mal place\n\n", bienPlace, malPlace );
 
    return 0;
}

Reply

Marsh Posté le 15-01-2011 à 01:27:45    

La il y a tout sauf les fonction.....lé // ou les printf c'est pour moi pour debogé pour voir si les variables sont bien inscrite en mémoire, elle y sont c'est l'égalité qui marche pas puis la condition qui est effectué alors qu'elle n'est pas vrai

Reply

Marsh Posté le 15-01-2011 à 01:28:56    

void aleaNbre(int nbreMaster[])
{
    int a,b,c,d,e,i = 0;
 
    a = (rand() % (8 - 1 + 1)) + 1;
 
    b = (rand() % (8 - 1 + 1)) + 1;
        while (b == a)
            {
                b = (rand() % (8 - 1 + 1)) + 1;
            }
    c = (rand() % (8 - 1 + 1)) + 1;
        while ((c == a) | (c == b) )
            {
                c = (rand() % (8 - 1 + 1)) + 1;
            }
    d = (rand() % (8 - 1 + 1)) + 1;
        while ((d == a) | (d == b) | (d == c) )
            {
                d = (rand() % (8 - 1 + 1)) + 1;
            }
 
    e = (rand() % (8 - 1 + 1)) + 1;
        while ((e == a) | (e == b) | (e == c) | (e == d) )
            {
                e = (rand() % (8 - 1 + 1)) + 1;
            }
 
    nbreMaster[0] = a ;
    nbreMaster[1] = b ;
    nbreMaster[2] = c ;
    nbreMaster[3] = d ;
    nbreMaster[4] = e ;
 
}
 
void lireCaractere(int poinNbreEntree[])
        {
            int a,b,c,d,e,i = 0;
 
            a = getc(stdin);
            b = getc(stdin);
            c = getc(stdin);
            d = getc(stdin);
            e = getc(stdin);
 
            poinNbreEntree[0] = a-48;
            poinNbreEntree[1] = b-48;
            poinNbreEntree[2] = c-48;
            poinNbreEntree[3] = d-48;
            poinNbreEntree[4] = e-48;
 
 
 
        }
 
void parcoursTabInt (int tableau[], int nbreLigne)
    {
        int i = 0;
        for ( i=0; i<nbreLigne; i++ )
            {
                printf("%d",tableau[i]);
            }
    }
 
 
//LES 3 FONCTIONS

Reply

Marsh Posté le 15-01-2011 à 02:10:18    

"a = (rand() % (8 - 1 + 1)) + 1;"

 

Pas de rapport direct avec ton problème mais pourquoi tu fais 8 - 1 + 1 ? [:petrus75]


Message édité par WiiDS le 15-01-2011 à 02:22:31

---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 15-01-2011 à 02:26:11    

Dans la logique c'est ma formule pour avoir un nombre plus ou moins aléatoire entre variables MIN et MAX
 
alea = (rand() % (MAX - MIN + 1)) + MIN;

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed