Exemple d'utilisation des tableaux

L'exemple proposé vise à mélanger de manière aléatoire les données d'un tableau initial (initial)  dans un tableau final (final).

Pour ce faire, on utilise un tableau intermédiaire qui est au départ une copie du tableau initial. Pour éviter d'avoir des doublons dans le tableau final, après chaque itération, on supprime la ligne comportant la donnée placée dans le tableau final dans le tableau intermédiaire.


Les tableaux initial et final ont donc une dimension fixe. Ce seront des tableaux statiques.

Le tableau intermédiaire va changer de taille à chaque itération. Ce sera un tableau dynamique.


Le code

//Application console permettant de mélanger les données du tableau statique INITIAL

#include <iostream>

#include <string>

using namespace std; //précise que l'on utilise des bibliothèques standards

#include <QVector>


//Les données de notre tableau sont doubles organisées dans une structure

struct Tpoint

{

   int x;

   char y;

};


Tpoint initial[10]; //notre tableau initial

Tpoint final[10]; //notre tableau final

QVector<Tpoint> intermediaire(10); //notre tableau intermédiaire

//----------------------------------------------------------------------------------------

//On place les valeurs dans le tableau initial et on copie ce tableau dans le tableau
//intermédiaire

void initialiser()

{

   for (int i=0;i<10;i++)

   {

       initial[i].x=i; //x contient des nombres de 0 à 9

       initial[i].y=toascii(65+i); //y contient des lettres de A à J

       intermediaire[i]=initial[i]; //copie vers la tableau dynamique

   }

}

//----------------------------------------------------------------------------------------

//On mélange les données et on les place dans le tableau final

void melanger()

{

   int aleat;

   int a=0;

while (intermediaire.size()!=0)  //tant que le tableau dynamique n'est pas vide

   {

     aleat=rand()%intermediaire.size(); //génère un nombre entre 0 et la taille du tableau

     final[a]=intermediaire[aleat]; //on place la valeur aléatioire

     intermediaire.remove(aleat); //on supprime du tableau intermédiaire la valeur

     a++; //enregfistrement suivant

   }

}

//----------------------------------------------------------------------------------------

int main() {

   initialiser();  //on initialise les tableaux

   string nom;

               //on affiche les valeurs y de initial

   for (int j=0;j<10;j++)

   {

       cout<<initial[j].y;

   }

   cout<<endl<<"Melange :"<<endl;

   melanger();   //on melange

               //on affiche les valeurs de final

   for (int j=0;j<10;j++)

   {

       cout<<final[j].y;

   }

   cout<<endl;

}

Le résultat :