Introduction
Dans ce laboratoire, vous allez apprendre à trier un ensemble non ordonné en utilisant le langage de programmation C++. Vous allez découvrir les concepts de base de l'ensemble non ordonné et sa mise en œuvre.
Dans ce laboratoire, vous allez apprendre à trier un ensemble non ordonné en utilisant le langage de programmation C++. Vous allez découvrir les concepts de base de l'ensemble non ordonné et sa mise en œuvre.
Pour commencer, ouvrez le terminal et tapez la commande suivante pour accéder au répertoire project :
cd project
Maintenant, créez un nouveau fichier appelé main.cpp dans le répertoire project. Ce fichier contiendra le code pour trier l'ensemble non ordonné.
touch main.cpp
Copiez et collez le code suivant dans le fichier main.cpp.
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
bool cmp(int x, int y)
{
if (x > y)
return true;
else
return false;
}
//Fonction pour afficher les éléments de l'ensemble non ordonné à l'aide d'un itérateur
void show(unordered_set<int> s)
{
//Déclaration d'un itérateur pour parcourir l'ensemble non ordonné
unordered_set<int>::iterator i;
for (i = s.begin(); i!= s.end(); i++)
{
cout << *i << " "; //Accès aux éléments de l'ensemble non ordonné en utilisant * car i stocke l'adresse de chaque élément
}
cout << endl;
}
int main()
{
cout << "\n\nBienvenue à LabEx :-)\n\n\n";
cout << " ===== Programme pour démontrer le tri d'un ensemble non ordonné, en CPP ===== \n\n\n\n";
cout << " *** L'ensemble non ordonné supprime automatiquement les éléments dupliqués et maintient un ordre aléatoire. *** \n\n";
cout << " *** Cet ordre aléatoire dépend de la fonction de hachage utilisée en interne. *** \n\n";
cout << " *** L'ensemble non ordonné peut être trié en copiant ses éléments dans un Vector. *** \n\n";
//Déclaration de l'ensemble non ordonné (ensemble non ordonné d'entiers)
unordered_set<int> s;
//Remplissage des éléments en utilisant la méthode insert()
cout << "\n\nRemplissage de l'ensemble non ordonné avec des entiers dans un ordre aléatoire."; //Contrairement à l'ensemble, cela n'est pas trié automatiquement
s.insert(5);
s.insert(39);
s.insert(64);
s.insert(82);
s.insert(35);
s.insert(54);
cout << "\n\nLes éléments de l'ensemble non ordonné avant le tri sont : ";
show(s);
//Déclaration d'un vecteur et initialisation avec les éléments de l'ensemble non ordonné
vector<int> v(s.begin(), s.end());
//Tri des éléments du vecteur par ordre décroissant en utilisant un comparateur personnalisé
sort(v.begin(), v.end(), cmp);
cout << "\n\nLes éléments de l'ensemble non ordonné après le tri par ordre décroissant en utilisant une méthode de tri personnalisée sont : \n";
//Déclaration d'un itérateur pour parcourir le vecteur
vector<int>::iterator it;
for (it = v.begin(); it!= v.end(); it++)
{
cout << *it << " "; //Accès aux éléments du vecteur en utilisant * car i stocke l'adresse de chaque élément
}
cout << "\n\n\n";
return 0;
}
Pour compiler le programme et créer un fichier exécutable, exécutez la commande suivante dans le terminal :
g++ main.cpp -o main
Cette commande créera un fichier exécutable nommé main.
Pour exécuter le code, exécutez la commande suivante :
./main
Vous devriez voir la sortie du programme dans le terminal.
Copiez le code final dans le fichier ~/project/main.cpp :
// ~/project/main.cpp
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
bool cmp(int x, int y)
{
if (x > y)
return true;
else
return false;
}
//Fonction pour afficher les éléments de l'ensemble non ordonné à l'aide d'un itérateur
void show(unordered_set<int> s)
{
//Déclaration d'un itérateur pour parcourir l'ensemble non ordonné
unordered_set<int>::iterator i;
for (i = s.begin(); i!= s.end(); i++)
{
cout << *i << " "; //Accès aux éléments de l'ensemble non ordonné en utilisant * car i stocke l'adresse de chaque élément
}
cout << endl;
}
int main()
{
cout << "\n\nBienvenue à LabEx :-)\n\n\n";
cout << " ===== Programme pour démontrer le tri d'un ensemble non ordonné, en CPP ===== \n\n\n\n";
cout << " *** L'ensemble non ordonné supprime automatiquement les éléments dupliqués et maintient un ordre aléatoire. *** \n\n";
cout << " *** Cet ordre aléatoire dépend de la fonction de hachage utilisée en interne. *** \n\n";
cout << " *** L'ensemble non ordonné peut être trié en copiant ses éléments dans un Vector. *** \n\n";
//Déclaration de l'ensemble non ordonné (ensemble non ordonné d'entiers)
unordered_set<int> s;
//Remplissage des éléments en utilisant la méthode insert()
cout << "\n\nRemplissage de l'ensemble non ordonné avec des entiers dans un ordre aléatoire."; //Contrairement à l'ensemble, cela n'est pas trié automatiquement
s.insert(5);
s.insert(39);
s.insert(64);
s.insert(82);
s.insert(35);
s.insert(54);
cout << "\n\nLes éléments de l'ensemble non ordonné avant le tri sont : ";
show(s);
//Déclaration d'un vecteur et initialisation avec les éléments de l'ensemble non ordonné
vector<int> v(s.begin(), s.end());
//Tri des éléments du vecteur par ordre décroissant en utilisant un comparateur personnalisé
sort(v.begin(), v.end(), cmp);
cout << "\n\nLes éléments de l'ensemble non ordonné après le tri par ordre décroissant en utilisant une méthode de tri personnalisée sont : \n";
//Déclaration d'un itérateur pour parcourir le vecteur
vector<int>::iterator it;
for (it = v.begin(); it!= v.end(); it++)
{
cout << *it << " "; //Accès aux éléments du vecteur en utilisant * car i stocke l'adresse de chaque élément
}
cout << "\n\n\n";
return 0;
}
Dans ce laboratoire, vous avez appris à trier un ensemble non ordonné en langage de programmation C++. Vous avez appris les concepts de base de l'ensemble non ordonné et sa mise en œuvre à l'aide d'un vecteur et de la méthode sort de la bibliothèque standard C++ (STL). Vous avez également appris à déclarer un ensemble non ordonné et à le remplir d'éléments.