Sélection aléatoire d'un element dans un tableau dynamique

Fermé
zarganomi - Modifié par zarganomi le 9/09/2014 à 15:53
Clapss Messages postés 389 Date d'inscription samedi 31 décembre 2011 Statut Membre Dernière intervention 14 décembre 2023 - 27 sept. 2014 à 22:40
Bonjour,
mon problème est que je veux sélectionner à chaque fois un élément dans un tableau dynamique qui est différent du précédent c'est pourquoi après sa sélection je le supprime pour qu'il ne sera pas revisité, alors je peux faire ça,mais lors de l'affichage des éléments sélectionnées je voix que parfois il se répète.
voila le code qui peut me détecter l'erreur pourquoi après la suppression de l'élément, il sera sélectionné un autre fois ?



N=5;

for (auto & tab : tab2D) // parcourt de tableau dynamique extérieur
{
for (int i=0; i<N ; i++) //tableau dynamique de sélection aléatoire

{
srand (time(NULL)); // sélectionner un élément du vecteur aléatoirement

v = rand() % N ;

if (P[i] == v)
{

P.erase(P.begin()+i); // suppression de cet élément du tableau dynamique
}
}
// en répétant cette boucle je veux qu'il sélectionne un élément différent.
}

aidez moi SVP.


2 réponses

Clapss Messages postés 389 Date d'inscription samedi 31 décembre 2011 Statut Membre Dernière intervention 14 décembre 2023 16
Modifié par Clapss le 10/09/2014 à 18:13
Yop,

* srand ne doit être appelé qu'une fois en début de programme.
* Après avoir tiré un nombre aléatoirement avec rand(), il faut parcourir le tableau pour chercher l'élément. Toi tu continues le parcours et tire un nombre avant d'avoir trouvé l'autre !


Pour i de 0 à N
On tire un nombre
Pour j de 0 à taille tableau

Si on a trouvé l'élement
On supprime
Fin Si

Fin Pour
Fin Pour
0
Clapss j'ai fait ça et le même problème, il tire encore parfois le même nombre supprimé. J'ai fait un exemple de vecteur T:{1 2 3 4 } je choisie le nombre 1, je le supprime il m'affiche un nouveau vecteur T':{2 3 4 }, puis lorsque je tire un nombre de nouveau vecteur T' et je l'ajoute à un autre vecteur T'' il ajoute parfois le nombre 1 qui est le nombre déjà supprimé.
je pense que le problème est comment je parcourt le vecteur après la suppression d'un élément?
moi je le parcourt comme ça :

for (int i=0; i< T.size();i++) 


qui peut m'aider SVP c urgent !!
0
Clapss Messages postés 389 Date d'inscription samedi 31 décembre 2011 Statut Membre Dernière intervention 14 décembre 2023 16
27 sept. 2014 à 22:40
Re-poste le nouveau code.
0