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 :