Trier des chaînes de caractères par longueur en C++

C++C++Beginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez apprendre à trier des chaînes de caractères en fonction de leur longueur à l'aide d'une méthode de tri personnalisée en langage de programmation C++. Vous allez également apprendre à implémenter une logique de tri personnalisée et à ordonner les éléments d'un ensemble non ordonné dans un ordre spécifique.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/FunctionsGroup(["Functions"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp/BasicsGroup -.-> cpp/strings("Strings") cpp/FunctionsGroup -.-> cpp/function_parameters("Function Parameters") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/StandardLibraryGroup -.-> cpp/standard_containers("Standard Containers") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/strings -.-> lab-96224{{"Trier des chaînes de caractères par longueur en C++"}} cpp/function_parameters -.-> lab-96224{{"Trier des chaînes de caractères par longueur en C++"}} cpp/output -.-> lab-96224{{"Trier des chaînes de caractères par longueur en C++"}} cpp/files -.-> lab-96224{{"Trier des chaînes de caractères par longueur en C++"}} cpp/standard_containers -.-> lab-96224{{"Trier des chaînes de caractères par longueur en C++"}} cpp/code_formatting -.-> lab-96224{{"Trier des chaînes de caractères par longueur en C++"}} end

Créer un nouveau fichier

La première étape consiste à créer un nouveau fichier. Ouvrez un terminal et accédez au répertoire ~/project. Créez un nouveau fichier appelé main.cpp à l'aide de votre éditeur de texte préféré.

cd ~/project
touch main.cpp

Écrire le code

Ajoutez le code suivant au fichier main.cpp. Ce code triera un ensemble de chaînes de caractères en fonction de leur longueur.

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

//Renvoie vrai si la première chaîne est de longueur supérieure à la seconde
bool cmp(string x, string y)
{
    int n = x.length();
    int m = y.length();

    if (n > m)
        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<string> s)
{
    //Déclaration d'un itérateur pour parcourir l'ensemble non ordonné
    unordered_set<string>::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 des chaînes de caractères en fonction de leur longueur, 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 vecteur. *** \n\n";

    //Déclaration de l'ensemble non ordonné (ensemble non ordonné de chaînes de caractères)
    unordered_set<string> s;

    //Remplissage des éléments en utilisant la méthode insert()
    cout << "\n\nRemplissage de l'ensemble non ordonné avec des chaînes de caractères dans un ordre aléatoire."; //Contrairement à l'ensemble, cela n'est pas trié automatiquement

    s.insert("Study");
    s.insert("Tonight");
    s.insert("Aditya");
    s.insert("Abhishek");
    s.insert("C++");
    s.insert("Hi");

    cout << "\n\nLes éléments de l'ensemble non ordonné avant le tri sont :\n ";
    show(s);

    //Déclaration d'un vecteur et initialisation avec les éléments de l'ensemble non ordonné
    vector<string> v(s.begin(), s.end());

    //Tri des éléments du vecteur par ordre décroissant de leur longueur à l'aide d'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 de leur longueur à l'aide d'un comparateur personnalisé sont : \n";

    //Déclaration d'un itérateur pour parcourir le vecteur
    vector<string>::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;
}

Compiler et exécuter le code

Pour compiler ce code, accédez au répertoire ~/project dans le terminal et exécutez la commande suivante :

g++ main.cpp -o main && ./main

La sortie vous montrera la liste triée des chaînes de caractères.

Résumé

Dans ce laboratoire, vous avez appris à trier un ensemble non ordonné de chaînes de caractères en écrivant une méthode de tri personnalisée en langage de programmation C++. Vous avez également appris à implémenter une logique de tri personnalisée et à ordonner les éléments d'un ensemble non ordonné dans un ordre spécifique. Cette connaissance peut être appliquée à une large gamme de projets de programmation, vous aidant à créer du code efficace et facile à lire.