Valeurs différentes dans un tableau

Résolu
Psyc0s Messages postés 24 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 3 mai 2006 - 3 mai 2006 à 03:56
gyzmo222 Messages postés 66 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 2 juin 2006 - 3 mai 2006 à 08:48
Bonjour,

J'ai en tableau integer de 24 entrés. Je veux mettre un nombre au hazard dans chaque entré mais de façon à avoir aucune valeur qui se répète.

Mon code ressemble à ça:

            Random random = new Random();

            int i;

            for (i = 0; i <= 24; i++)
            {
                iTable[i] = random.Next(iNumrows);
                for (int y = 0; y <= i; y++)
                {
                    if (iTable[i] == iTable[y])
                       iTable[i] = random.Next(iNumrows);
                }
            }

Le problème est que cette boucle vérifie seulement pour la valeur en cour et que la nouvelle valeur peut être identique à une autre déja présente dans le tableau.

Merci

[:)]

3 réponses

taoetc Messages postés 346 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 3 septembre 2007 3
3 mai 2006 à 08:42
Random random = new Random();
bool tableauVerif = false;
bool valeurDejaPresente = false;
            int i;

            for (i = 0; i <= 24; i++)
            {
               tableauVerif= false;
               valeurDejaPresente = false;
               
                while (tableauVerif == false)
               {
                       for (int y = 0; y <= i; y++)
                      {
                          if (iTable[i] == iTable[y])
                           {//si je trouve la valeur alors je sors de la boucle
                                valeurDejaPresente = true;
                                break;
                          }
                       }
                       if(valeurDejaPresente==true)
                       {//si la valeur est déjà presente alors j'en prend une autre
                            iTable[i] = random.Next(iNumrows);
                            valeurDejaPresente = false;
                       }
                       else // j'ai vérifié toutes les valeurs
                          tableauVerif= true;                           
                }
            }




Be happy , by
Tao
3
gyzmo222 Messages postés 66 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 2 juin 2006 1
3 mai 2006 à 08:47
J'ai pas testé mais ca a le mérite de m'avoir un peu réveillé, j'espère que ca fonctionnera :p

Random random = new Random();

            int i;  //index du tableau à remplir
             int trouv=0;  //sert à indiquer que le nombre est trouvé
             int k=0;  //nombre random            for (i 0; i < 24; i++) //pas de car le 0 compte et ca ferait 25entrées
            {
             trouv=0;  //remettre trouv à 0 avant la boucle pour chaque index du tableau
             while (trouv == 0) //tant qu'il n'a pas trouvé le meme nombre il boucle
                {
                k = random.Next(iNumrows);  //mise d'un nombre dans k
                for (int y = 0; y < i; y++)  //parcours du tableau déja rempli (donc pas d'égal car la case i n'est pas encore remplie)
                {
                    if (iTable[y] == k)  // si le nombre du tableau vaut le nombre random
                       {trouv=1;}  //il l'a trouvé
                }
             if (trouv == 0)  //si il n'a rien trouvé
          { iTable[i] = k; trouv=1;} //on met ce nombre unique dans le tableau et on met trouv a 1 pour sortir de la boucle
             }
            }
0
gyzmo222 Messages postés 66 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 2 juin 2006 1
3 mai 2006 à 08:48
Ho un plus rapide, je vais me recoucher :D
0
Rejoignez-nous