arconius
Messages postés27Date d'inscriptiondimanche 10 février 2002StatutMembreDernière intervention16 janvier 2006
-
10 mai 2002 à 13:54
cs_kjus
Messages postés269Date d'inscriptionmercredi 24 avril 2002StatutMembreDerniè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.
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;
}
}
jcecchi
Messages postés117Date d'inscriptionsamedi 12 janvier 2002StatutMembreDernière intervention14 janvier 20033 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";
}