Condition qui se mette toute seul - C - Programmation
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
Marsh Posté le 14-01-2011 à 23:46:22
As tu poste tout ton code (une boucle par exemple)? car ce code
Code :
|
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.
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 :
|
C'est l'équivalent de ça :
Code :
|
Et donc "nbreMaster" n'est pas initialisé.
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;
}
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
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
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 ?
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;
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