Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3039 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Condition qui se mette toute seul

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Condition qui se mette toute seul

n°2049228
deaphroat
Posté le 14-01-2011 à 23:27:18  profilanswer
 

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
mood
Publicité
Posté le 14-01-2011 à 23:27:18  profilanswer
 

n°2049231
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 14-01-2011 à 23:43:24  profilanswer
 

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
n°2049232
mr simon
Posté le 14-01-2011 à 23:46:22  profilanswer
 

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
n°2049234
regexp42
Eplucheur de RFC.
Posté le 15-01-2011 à 00:08:39  profilanswer
 

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é.

n°2049246
deaphroat
Posté le 15-01-2011 à 01:26:11  profilanswer
 

#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;
}

n°2049247
deaphroat
Posté le 15-01-2011 à 01:27:45  profilanswer
 

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

n°2049249
deaphroat
Posté le 15-01-2011 à 01:28:56  profilanswer
 

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

n°2049253
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 15-01-2011 à 02:10:18  profilanswer
 

"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
n°2049255
deaphroat
Posté le 15-01-2011 à 02:26:11  profilanswer
 

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;


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Condition qui se mette toute seul

 

Sujets relatifs
Regroupement de résultats sur une seul ligne[MDX] Condition WHERE sur une hiérarchie
Header tout seul qui ne fonctionne pasXLST - Condition xsl:if ne marche pas
[RESOLU] checkbox et condition[RESOLU]redirection php a partir d'un form le tout sur un seul fichier
Inclure plusieurs fichiers xml dans un seulCopier Coller vers un autre classeur excel sous condition
une condition dans un do while qui plante ...[BATCH] DIR d'un seul sous-dossier
Plus de sujets relatifs à : Condition qui se mette toute seul


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR