Ordenação de Strings por Comprimento em C++

C++Beginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como ordenar strings com base no comprimento usando um método de ordenação personalizado na linguagem de programação C++. Você também aprenderá como implementar lógica de ordenação personalizada e ordenar os elementos de um conjunto não ordenado em uma ordem específica.

Criar um novo arquivo

O primeiro passo é criar um novo arquivo. Abra um terminal e navegue até o diretório ~/project. Crie um novo arquivo chamado main.cpp usando seu editor de texto preferido.

cd ~/project
touch main.cpp

Escrever o código

Adicione o seguinte código ao arquivo main.cpp. Este código irá ordenar um conjunto de strings com base em seus comprimentos.

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

using namespace std;

//Retorna true se a primeira string tiver um comprimento maior que a segunda
bool cmp(string x, string y)
{
    int n = x.length();
    int m = y.length();

    if (n > m)
        return true;
    else
        return false;
}

//Função para imprimir os elementos do conjunto não ordenado usando um iterador
void show(unordered_set<string> s)
{
    //declarando um iterador para iterar através do conjunto não ordenado
    unordered_set<string>::iterator i;

    for (i = s.begin(); i != s.end(); i++)
    {
        cout << *i << "     "; //acessando os elementos do conjunto não ordenado usando * pois i armazena o endereço de cada elemento
    }

    cout << endl;
}

int main()
{
    cout << "\n\nBem-vindo ao LabEx :-)\n\n\n";
    cout << " =====  Programa para demonstrar a Ordenação de Strings com base no comprimento, em CPP  ===== \n\n\n\n";

    cout << " *** Unordered Set remove automaticamente os elementos duplicados e mantém uma ordenação aleatória. *** \n\n";

    cout << " *** Esta ordenação aleatória depende da função hash que é usada internamente. *** \n\n";

    cout << " *** Unordered set pode ser ordenado copiando seus elementos para um Vector. *** \n\n";

    //Declaração do Unordered Set (Unordered Set de strings)
    unordered_set<string> s;

    //Preenchendo os elementos usando o método insert().
    cout << "\n\nPreenchendo o Unordered Set com strings em ordem aleatória."; //Ao contrário do Set, este não é automaticamente ordenado

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

    cout << "\n\nOs elementos do Unordered Set antes da ordenação são:\n ";
    show(s);

    //Declarando um vetor e inicializando-o com os elementos do conjunto não ordenado
    vector<string> v(s.begin(), s.end());

    //Ordenando os elementos do vetor em ordem decrescente de seus comprimentos usando um comparador personalizado
    sort(v.begin(), v.end(), cmp);

    cout << "\n\nOs elementos do Unordered Set após a ordenação em Ordem decrescente de seus comprimentos usando um comparador personalizado são: \n";

    //declarando um iterador para iterar através do vetor
    vector<string>::iterator it;

    for (it = v.begin(); it != v.end(); it++)
    {
        cout << *it << "     "; //acessando os elementos do vetor usando * pois i armazena o endereço de cada elemento
    }

    cout << "\n\n\n";

    return 0;
}

Compilar e executar o código

Para compilar este código, navegue até o diretório ~/project no terminal e execute o seguinte comando:

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

A saída mostrará a lista de strings ordenada.

Resumo

Neste laboratório, você aprendeu como ordenar um conjunto não ordenado de strings, escrevendo um método de ordenação personalizado na linguagem de programação C++. Você também aprendeu como implementar lógica de ordenação personalizada e ordenar os elementos de um conjunto não ordenado em uma ordem específica. Este conhecimento pode ser aplicado a uma ampla gama de projetos de programação, ajudando você a criar código eficiente e fácil de ler.