Se connecter / S'enregistrer
Votre question

Un if qui merde en C++

Tags :
  • Programmation
Dernière réponse : dans Programmation
31 Décembre 2006 12:58:32

Bonjour à tous !

Je suis en train de bosser sur un projet de jeu en C++. J'ai une base qui m'a été fournie, je la modifie avec deux collègues pour obtenir un ptit jeu.
J'ai un problème sur cette condition :

Citation :
if((lancers>=3) && ((rand() % 7) == 1))


lancers est un entier qui s'incrémente en permanence (la condition est donc toujours vraie au bout d'un certain temps) et (rand() % 7) == 1) me permet de rentrer dans le if 1 fois sur 7 aléatoirement. Malheureusement je ne rentre jamais dans mon if, et j'arrive pas à comprendre pourquoi. Si je fais if(rand() % 7) == 1) ou if(lancers>=3) je rentre dans mon if, mais pas si je met les deux conditions.
Comprends po :heink: 
Si vous avez une idée je suis preneur. Merci d'avance !

Autres pages sur : merde

31 Décembre 2006 13:19:06

regarde ce que donne ton rand(). si il est mal initialisé ou quelque chose comme ça, tu le sauras tout de suite.
Anonyme
31 Décembre 2006 13:26:53

Mets un printf de lancers et rand() % 7 juste avant le if pour voir ce qui se passe.
Contenus similaires
31 Décembre 2006 14:10:21

J'ai regardé le résultat du rand, et j'ai bien un resultat aléatoire entre 0 et 6. J'utilise pas mal le rand() et il marche partout.
C'est bizarre quand même que les conditions sont respectées une par une, mais quand les deux sont ensemble, ça marche plus...
a c 145 L Programmation
31 Décembre 2006 14:17:03

question surement très stupide: est-ce qu'il arrive que lancers soit >= à 3 et que (rand() % 7) == 1 en même temps?
a b L Programmation
31 Décembre 2006 15:48:08

Si "lancer" n'est pas issu d'un tirage pseudo-aléatoire, je pense plutôt qu'il faut voir si l'incrémentation est effective (et vérifier qu'elle ne se fasse pas sur une condition aléatoire).
1 Janvier 2007 21:12:11

Bonne année tout le monde les gens :) 

Pour crazycat : oui normalement c'est possible puisque lancers est un entier qui s'incrémente en permanence (le tout est situé dans une boucle infinie (le temps du jeu). Et rand() me donnant de temps en temps un 1.

Pour CRicky : comme je le dit plus haut, lancers s'incrément bien. Le fait que si le if n'inclut que la condition de lancers >= 3 ( if(lancers>=3 ) marche bien est sensé me prouver que ca marche non ?
1 Janvier 2007 21:18:05

Juste un petit détail, l'objectif est bien de n'entrer dans le IF que si les 2 conditions sont remplies au meme moment et pas quand l'une ou l'autre l'est? On se trompe souvent entre les && et les || dans les tests logiques ...
2 Janvier 2007 10:52:14

affiche les 2 valeurs dans ton code ...
tu devrais trouver ton erreur de cette façon ...

int r = rand() % 7;
printf("%d, %d\n", lancers, r);
if((lancers>=3) && (r == 1))
...
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS