Mélanger

MirKoRn Messages postés 27 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 18 octobre 2007 - 28 août 2007 à 16:04
MirKoRn Messages postés 27 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 18 octobre 2007 - 18 oct. 2007 à 10:45
quelqu'uin aurait une idée comment mélanger ce tableau?!?!?!
je me casse le cul a essayer et j'y arrive pas

ët aussi pour enlever les zeros de fin de ligne... si c'est possible et si ils influent sur le tri!

17 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
28 août 2007 à 16:29
Quel tableau?
1
MirKoRn Messages postés 27 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 18 octobre 2007
28 août 2007 à 16:44
oups... celui là:

int TabPos()
{
 cout<<endl<<endl;
 for (i=0;i<1;i++)
 {
 for (j=0;j<=13;j++ )
 {cout<<j<<" ";}
 }
 for (i=0;i<1;i++)
 {cout<<i<<endl;


 for (j=14;j<=27;j++ )
 {cout<<j<<" ";}
 }
 for (i=0;i<1;i++)
 {cout<<i<<endl;


 for (j=28;j<=40;j++ )
 {cout<<j<<" ";}
 }
 for (i=0;i<1;i++)
 {cout<<i<<endl;


 for (j=41;j<=51;j++ )
 {cout<<j<<" ";}
 }
cout<<endl<<endl;
 return 0;
 }
0
MirKoRn Messages postés 27 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 18 octobre 2007
28 août 2007 à 16:45
ça donne une tableau de 4 ligne avec les chiffres de 0 à 51(jeu de poker)
enfin 4 tableaux de une ligne...
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
28 août 2007 à 16:52
Ben déjà faudra le stocker sous forme d'un vrai tableau. Ensuite tu peux utiliser une fonction aléatoire qui te donnera un nombre entre 0 et le nombre de cartes restantes (partant de 51, ça décroit à chaque tirage) pour obtenir une séquence de cartes.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MirKoRn Messages postés 27 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 18 octobre 2007
28 août 2007 à 16:58
j'ai fait un autre tableau avec une boucle for dans une boucle for mais ça va pas! et tu px expiquer plus récisément stp

c'est ça si jms:

 for (i=0;i<4;i++)
 {cout<<i<<endl;


 for (j=0;j<=13;j++ )
 {cout<<j<<" ";}
 }
 cout<<endl<<endl;
 return 0;
 }
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
28 août 2007 à 17:15
Oui déjà tu devrais faire :
for (i=0;i<4;i++)
 {
for (j=0;j<13;j++ )
 {cout<<j+13*i<<" ";}
cout<<endl;
 }

Mais c'est pas ça que je voulais dire : si tu veux pouvoir faire un tirage aléatoire, il faut pouvoir stocker tes données : savoir quelles cartes n'ont pas été tirées etc...Par exemple dans un tableau simple int nCards[51]; mais après cela dépend de la méthode choisie, tu peux également implémenter une liste...
0
MirKoRn Messages postés 27 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 18 octobre 2007
28 août 2007 à 17:24
mais dans mon simple tableau int nCards[51]; je dois tout recrir à la main non?
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
28 août 2007 à 17:35
non.
for(int i=0;i<52;i++) nCards[i]=i;
Ca c'est sans hasard.
0
MirKoRn Messages postés 27 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 18 octobre 2007
28 août 2007 à 18:02
ça va pas... j'ai essayer de bidouiller un moment mais le tableau veut pas s'afficher avec ta manière...
0
MirKoRn Messages postés 27 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 18 octobre 2007
28 août 2007 à 18:05
reussis c'est bon... j'ai rien dis... mais j'ai aussi chercher ce que tu me disai... implementer.... pas tout a fait compris!
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
28 août 2007 à 18:30
implémenter~coder...
Je voulais dire que tu n'es pas obligé de les ranger dans un tableau, mais dans la structure la mieux adaptée au reste du programme.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
31 août 2007 à 11:41
char in[TAILLE];
char out[TAILLE];
int r;
for (int i=0;i<TAILLE;i++){
r=rand()%TAILLE;
while(in[r]==-1){
r--;
if (r==-1){ r=rand()%TAILLE; }
}
out[i]=in[r];
in[r]=-1;
}

ce qui ressemblerait le plus au melange de cartes manuel, c'est ca... mais ca fait une copie

char in[TAILLE];
int r;
for (int i=0;i<TAILLE;i++){
r=rand()%TAILLE;
a=in[r];
in[r]=in[i];
in[i]=a;
}

ceci c'est un poil plus rapide, t'as pas de copie, mais est-ce-parfaitement melange ? j'en sais rien, moi je pense que non... mais pour un jeu de carte, ca n'a que peu d'importance...
0
MirKoRn Messages postés 27 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 18 octobre 2007
31 août 2007 à 15:49
ouais j'ai essayer mais bon je suis en train de désespérer.... je dois finir mon programme pour la semaine prochaine et j'ai toujours rien... je sais pas comment je vais m'en sortir vous avez pas une idée pour créer un programme de poker?

je voudrais avoir un tableau qui se mélange et ensuite donner des valeurs aux cartes pour pouvoir faire des additions pour détérminer qui à la main gagnante!
0
Samaths Messages postés 10 Date d'inscription jeudi 6 septembre 2007 Statut Membre Dernière intervention 22 juillet 2008
10 sept. 2007 à 17:13
Hello,

voici ce que je ferai à ta place, pour que ca soit "équiprobable" (c'est à dire avec les mêmes chances qu'un vrai mélange). Ca ressemble pas mal à ce qu'a fait coucou, mais en différent:

// D'abord un tableau avec les nombres dedans, le "tas de carte"
int in[Taille]

// Un second tableau, avec les cartes tirées
int out[Taille]

// Ensuit on fait les tirages:
for (int i(0); i<Taille; ++i)
{
      // On choisit un indice du premier tableau:
      int r(rand()%(Taille-i));
      // On met cet élément dans notre tableau de sortie
      out[i]=in[r];
      // Puis on remplace celui qu'on a pris par le dernier
      in[r]=in[Taille-1-i]
};

Voilà, ton out est pret! Remarque bien que lorsque j'ai tiré un nombre, je ne le retire pas: je copie le dernier à la place de celui que je viens de tirer, mais je ne vais plus tirer le dernier!
Ca devrait marcher normalement...

Sam-maths

P.S: la différence avec ce qu'a fait coucou, c'est qu'avec sa première méthode on a parfois plus de chance de tirer des petits numéros que des grands (à cause du --r)
P.S2: en fait, on aurait meme pas besoin de 2 tableaux, un tableau et un entier suffisent, mais on voit moins bien les choses
0
MirKoRn Messages postés 27 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 18 octobre 2007
11 sept. 2007 à 13:37
le pire quand on quitte le Pc, c'est la dure réalité de la belle vie que nous menons en se monde!
0
MirKoRn Messages postés 27 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 18 octobre 2007
11 sept. 2007 à 13:38
merci bcp je vais bucher la dessus maintenant!! en fait ce que j'avait penser c'est séparer un tableau en 2 tableaux

merci encore
0
MirKoRn Messages postés 27 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 18 octobre 2007
18 oct. 2007 à 10:45
Voilà, J'ai enfin terminer mon programme mais il fait plus qu'un méga et je ne peut pas le mettre en ligne alors pour ceux que cela intéresse faites moi signe en m'envoyant un mail a cette adresse: mirco_iuliano@hotmail.com.
0
Rejoignez-nous