Problème avec une boucle while

Signaler
Messages postés
27
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 janvier 2006
-
cs_kjus
Messages postés
269
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
9 juin 2003
-
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

Messages postés
117
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
14 janvier 2003
2
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";
}
Messages postés
27
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 janvier 2006

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.
Messages postés
117
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
14 janvier 2003
2
desole pour ca je peux pas t'aider.
Messages postés
269
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
9 juin 2003

essaye de remplacer tous les if + goto par des while, c beaucoup plus propre et plus instructif :=)
***raph***