cs_Etoiline
Messages postés24Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention26 avril 2007
-
20 avril 2007 à 20:19
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 2009
-
24 avril 2007 à 11:55
Hello !
Voilou je suis débutante en c++. Je dois faire un jeu de yams mais j'ai un problème : pour le premier lancer de dé tout va bien mais pour le second il me génère exactement les même nmbres qu'au premier et idem pour le troisième. Je vous mets le début du programme
#include
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std ;
int hasard(int min, int max);
int hasard(int min, int max){
return (int) (min + ((float) rand() / RAND_MAX * (max - min + 1)));
}
main ()
{ int a, b, c, d, e, i, n, p ;
int vect[5];
bool de1, de2, de3, de4, de5 ;
int min = 1;
int max = 6;
srand(time(NULL));
//premier lancer
a=hasard(min, max);
b=hasard(min, max);
c=hasard(min, max);
d=hasard(min, max);
e=hasard(min, max);
de1=false;
de2=false;
de3=false;
de4=false;
de5=false;
cout<<"dé1 :" <>n;
if (n==1)
de1=true;
if (n==2)
de2=true;
if (n==3)
de3=true;
if (n==4)
de4=true;
if (n==5)
de5=true;}
//deuxième lancer
if (de1=false)
a=hasard(min, max);
if (de2=false)
b=hasard(min, max);
if (de3=false)
c=hasard(min, max);
if (de4=false)
d=hasard(min, max);
if (de5=false)
e=hasard(min, max);
cout<<"dé1 :" <>n;
if (n==1)
de1=true;
if (n==2)
de2=true;
if (n==3)
de3=true;
if (n==4)
de4=true;
if (n==5)
de5=true;}
//troisième lancer
if (de1=false)
a=hasard(min, max);
if (de2=false)
b=hasard(min, max);
if (de3=false)
c=hasard(min, max);
if (de4=false)
d=hasard(min, max);
if (de5=false)
e=hasard(min, max);
cout<<"dé1 :" <<a<<" dé2 :" <<b<<" dé3 :" <<c<<" dé4 :" <<d<<" dé5 :" <<e ;}
J'utilise dev c++.
J'ai déjà essayé d'autres façon de générer des nombres aléatoires mais je reviens toujours au même problème et j'arrive pas à comprendre pourquoi.
Pouvez-vous m'aider svp ?
Merci
if (de1==FALSE)
a=hasard(min, max);
if (de2==FALSE)
b=hasard(min, max);
if (de3==FALSE)
c=hasard(min, max);
if (de4==FALSE)
d=hasard(min, max);
if (de5==FALSE)
e=hasard(min, max);
cs_Etoiline
Messages postés24Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention26 avril 2007 21 avril 2007 à 11:54
J'ai un autre blème dans mon programme (décidément ya que ça !) : il ne m'affiche pas les résultats du troisième lancer au lieu de ça la fenêtre d'exécution se ferme. Pourquoi ?
ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 20144 21 avril 2007 à 15:14
Salut,
Afin de faire plusieurs lancers d'affilés il faudrait utiliser une boucle for puis sauvegarder les resultats dans un vector . Avec çà ton code sera plus lisible et donc plus à comprendre.
A quoi çà sert de faire copier coller lorsque la bouckle le fait pour toi?
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 24 avril 2007 à 11:43
Salut,
pour la fermeture intempestive du programme avant l'affichage des résultats, essaie de rajouter à la fin de ton code ceci :
system("pause");
si t'as des erreurs la dessus, je crois qu'un include de windows.h peut pallier au problème.
l'explication c'est qu'une fois qu'il a affiché ton résultat, le programme est terminé et ferme. ce petit bout de code oblige l'utilisateur à appuyer sur une touche comme indiqué dans la fenêtre console avant de passer à la suite des instructions. on peut aussi mettre getch() comme un barbare, c'est pas fait pour ca mais aucun message ne s'affiche. (include conio.h il me semble)
si ca ne change rien, montre nous ton code et précise les déroulement visuel que tu obtiens.
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 24 avril 2007 à 11:50
j'ai oublié, si tu trouves que ton affichage a du retard à l'allumage, c'est parce que cout<> un peu partout qui forçaient le vidage du tampon de sortie (sauf erreur de ma part)
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 24 avril 2007 à 11:55
très bonne question gamemonde,
tout ce que je sais c'est que la fonction system() sert à appeler des instructions qu'on voudrait normalement taper directement dans le shell windows comme pause, cls ...
si l'instruction pause existe dans le shell linux pourquoi pas, sinon peut-être y a t'il un équivalent.