Problème avec une boucle while

arconius Messages postés 27 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 janvier 2006 - 10 mai 2002 à 13:54
cs_kjus Messages postés 269 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 9 juin 2003 - 11 mai 2002 à 12:36
voilà j'ai fait un prog où l'on tire des dés mais j'ai un problème avec ma boucle while car au lieu de me donner un chiffre aléatoire à chaque fois il me donne toujours le même chiffre. Voila mon code si vous êtes meilleur que moi se dont je ne doute pas je vous invite à me donner des solutions. Un peu de couleur serai aussi bienvenue. Voila mon code :
je suis concient de ne pas avoir été très clair mais si vous me comprenez c'est que vous ête certainement très douer.

#include <stdlib.h>
#include <stdio.h>
#include
#include <time.h>

void main()
{
cout << "bonjour \n";
int x;
debut :;
cout << "Choisissez le nombre de faces de votre de :( 0 pour quitter)\n";
cin >> x;
cout << "vous avez choisis un de a " << x << " faces\n";

if (x < 1)
{
goto end;
}
else
{

prog :;
int choix;
cout << "Appuyer sur 1 pour continuer ou sur 0 pour revenir au choix du nombre de faces \n";
cin >> choix;
if (choix < 1)
{
goto debut;
}
else
{
int z;
cout << "Choisissez le nombre de jet de de que vous desirez :\n";
cin >> z;
cout << "Le programme va maintenant vous donnez " << z << " chiffres au hazard \n";
int y;
while (z > 0)
{
srand((unsigned)time(NULL));
y = (rand()%x)+1;
cout << "Votre jet du de a " << x << " faces est :" << y << "\n";
z--;
}
goto prog;
}
end :;
return 0;
}
}

4 réponses

jcecchi Messages postés 117 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 14 janvier 2003 3
10 mai 2002 à 14:24
salut,

il faut que tu sortes le srand(...) de ta boucle while.
il suffit de le mettre une fois au debut du programme pour initialiser rand() une bonne fois pour toute.
Dans ta boucle while, tu reinitialise rand() a chaque boucle avec toujours la meme valeur donc le terme que renvoi rand() reste le meme.
Je te propose ceci :

srand((unsigned)time(NULL));
for(i=0 ; i<z ; ++i)
{
y = (rand()%x) + 1;
cout << ... << y << "\n";
}
0
arconius Messages postés 27 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 janvier 2006
10 mai 2002 à 14:44
Merci beaucoup pour ta réponse claire et précise si tu pouvais aussi m'aider à mettre un peu de couleur se serait sympa merci d'avance.
0
jcecchi Messages postés 117 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 14 janvier 2003 3
10 mai 2002 à 20:40
desole pour ca je peux pas t'aider.
0
cs_kjus Messages postés 269 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 9 juin 2003
11 mai 2002 à 12:36
essaye de remplacer tous les if + goto par des while, c beaucoup plus propre et plus instructif :=)
***raph***
0
Rejoignez-nous