Introducción
En este laboratorio, aprenderá a ordenar un conjunto no ordenado en el lenguaje de programación C++. Aprenderá sobre los conceptos básicos del conjunto no ordenado y su implementación.
En este laboratorio, aprenderá a ordenar un conjunto no ordenado en el lenguaje de programación C++. Aprenderá sobre los conceptos básicos del conjunto no ordenado y su implementación.
Para comenzar, abra el terminal y escriba el siguiente comando para navegar hasta el directorio project:
cd project
Ahora, cree un nuevo archivo llamado main.cpp en el directorio project. Este archivo contendrá el código para ordenar el conjunto no ordenado.
touch main.cpp
Copie y pegue el siguiente código en el archivo 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;
}
//Función para imprimir los elementos del conjunto no ordenado utilizando un iterador
void show(unordered_set<int> s)
{
//Declarando un iterador para iterar a través del conjunto no ordenado
unordered_set<int>::iterator i;
for (i = s.begin(); i!= s.end(); i++)
{
cout << *i << " "; //Accediendo a los elementos del conjunto no ordenado utilizando * ya que i almacena la dirección de cada elemento
}
cout << endl;
}
int main()
{
cout << "\n\nBienvenido a LabEx :-)\n\n\n";
cout << " ===== Programa para demostrar la clasificación de un Conjunto No Ordenado, en CPP ===== \n\n\n\n";
cout << " *** El Conjunto No Ordenado automaticamente elimina los elementos duplicados y mantiene un orden aleatorio. *** \n\n";
cout << " *** Este orden aleatorio depende de la función hash que se utiliza internamente. *** \n\n";
cout << " *** El conjunto no ordenado se puede ordenar copiando sus elementos a un Vector. *** \n\n";
//Declaración del Conjunto No Ordenado (Conjunto No Ordenado de enteros)
unordered_set<int> s;
//Llenando los elementos utilizando el método insert()
cout << "\n\nLlenando el Conjunto No Ordenado con enteros en orden aleatorio."; //A diferencia del Conjunto, esto no se ordena automáticamente
s.insert(5);
s.insert(39);
s.insert(64);
s.insert(82);
s.insert(35);
s.insert(54);
cout << "\n\nLos elementos del Conjunto No Ordenado antes de la clasificación son: ";
show(s);
//Declarando un vector e inicializándolo con los elementos del conjunto no ordenado
vector<int> v(s.begin(), s.end());
//Clasificando los elementos del vector en orden descendente utilizando un comparador personalizado
sort(v.begin(), v.end(), cmp);
cout << "\n\nLos elementos del Conjunto No Ordenado después de la clasificación en orden descendente utilizando un método de clasificación personalizado son: \n";
//Declarando un iterador para iterar a través del vector
vector<int>::iterator it;
for (it = v.begin(); it!= v.end(); it++)
{
cout << *it << " "; //Accediendo a los elementos del vector utilizando * ya que i almacena la dirección de cada elemento
}
cout << "\n\n\n";
return 0;
}
Para compilar el programa y crear un archivo ejecutable, ejecute el siguiente comando en el terminal:
g++ main.cpp -o main
Este comando creará un archivo ejecutable llamado main.
Para ejecutar el código, ejecute el siguiente comando:
./main
Debería ver la salida del programa en el terminal.
Copia el código final al archivo ~/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;
}
//Función para imprimir los elementos del conjunto no ordenado utilizando un iterador
void show(unordered_set<int> s)
{
//Declarando un iterador para iterar a través del conjunto no ordenado
unordered_set<int>::iterator i;
for (i = s.begin(); i!= s.end(); i++)
{
cout << *i << " "; //Accediendo a los elementos del conjunto no ordenado utilizando * ya que i almacena la dirección de cada elemento
}
cout << endl;
}
int main()
{
cout << "\n\nBienvenido a LabEx :-)\n\n\n";
cout << " ===== Programa para demostrar la clasificación de un Conjunto No Ordenado, en CPP ===== \n\n\n\n";
cout << " *** El Conjunto No Ordenado automaticamente elimina los elementos duplicados y mantiene un orden aleatorio. *** \n\n";
cout << " *** Este orden aleatorio depende de la función hash que se utiliza internamente. *** \n\n";
cout << " *** El conjunto no ordenado se puede ordenar copiando sus elementos a un Vector. *** \n\n";
//Declaración del Conjunto No Ordenado (Conjunto No Ordenado de enteros)
unordered_set<int> s;
//Llenando los elementos utilizando el método insert()
cout << "\n\nLlenando el Conjunto No Ordenado con enteros en orden aleatorio."; //A diferencia del Conjunto, esto no se ordena automáticamente
s.insert(5);
s.insert(39);
s.insert(64);
s.insert(82);
s.insert(35);
s.insert(54);
cout << "\n\nLos elementos del Conjunto No Ordenado antes de la clasificación son: ";
show(s);
//Declarando un vector e inicializándolo con los elementos del conjunto no ordenado
vector<int> v(s.begin(), s.end());
//Clasificando los elementos del vector en orden descendente utilizando un comparador personalizado
sort(v.begin(), v.end(), cmp);
cout << "\n\nLos elementos del Conjunto No Ordenado después de la clasificación en orden descendente utilizando un método de clasificación personalizado son: \n";
//Declarando un iterador para iterar a través del vector
vector<int>::iterator it;
for (it = v.begin(); it!= v.end(); it++)
{
cout << *it << " "; //Accediendo a los elementos del vector utilizando * ya que i almacena la dirección de cada elemento
}
cout << "\n\n\n";
return 0;
}
En este laboratorio, has aprendido cómo ordenar un conjunto no ordenado en el lenguaje de programación C++. Has aprendido los conceptos básicos del conjunto no ordenado y su implementación utilizando un vector y el método sort de la STL. También has aprendido cómo declarar un conjunto no ordenado y cómo llenarlo con elementos.