Comprobar duplicados en una matriz

C++Beginner
Practicar Ahora

Introducción

En este laboratorio, aprenderemos a determinar si una matriz dada contiene duplicados o no, utilizando el lenguaje de programación C++. Esto se logrará ordenando la matriz y luego comparando elementos adyacentes para ver si son iguales.

Escribe la biblioteca y la función principal

Escribe la biblioteca y la función principal de la siguiente manera.

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

using namespace std;

bool containsDuplicate(int n[], int m)
{
    // Crea una bandera para indicar la presencia de duplicados
    int f = 0;

    // Ordena la matriz de entrada para comprobar duplicados
    sort(n, n + m);

    for (int i = 0; i < m - 1; i++)
    {
        if (n[i] == n[i + 1])
        {
            // Establece la bandera en 1 y sale del bucle si se encuentra un duplicado
            f = 1;
            break;
        }
    }

    if (f == 1) {
        // Se encontró un duplicado
        return true;
    }
    else {
        // No se encontraron duplicados
        return false;
    }
}

int main()
{
    cout << "\n\nBienvenido a LabEx :-)\n\n\n";
    cout << " ===== Programa para comprobar si hay duplicados en la matriz de entrada  ===== \n\n";

    int i, n1, n2;

    int a1[] = {2, 3, 1, 4, 5, 2, 8, 9};
    int a2[] = {2, 3, 1, 4, 5, 10, 8, 9};

    bool duplicate1 = false;
    bool duplicate2 = false;

    // Obtiene el tamaño de las dos matrices de entrada
    n1 = sizeof(a1) / sizeof(a1[0]);
    n2 = sizeof(a2) / sizeof(a2[0]);

    // Imprime la primera matriz de entrada
    cout << "\n\nLos elementos de la primera matriz de entrada son :\n\n";

    for (i = 0; i < n1; i++)
    {
        cout << a1[i] << "  ";
    }

    // Comprueba si la primera matriz de entrada contiene duplicados
    duplicate1 = containsDuplicate(a1, n1);

    if (duplicate1) {
        cout << "\n\nLa primera matriz de entrada contiene duplicados";
    }
    else {
        cout << "\n\nLa primera matriz de entrada no contiene ningún duplicado";
    }

    // Imprime la segunda matriz de entrada
    cout << "\n\n\n\nLos elementos de la segunda matriz de entrada son :\n\n";

    for (i = 0; i < n2; i++)
    {
        cout << a2[i] << "  ";
    }

    // Comprueba si la segunda matriz de entrada contiene duplicados
    duplicate2 = containsDuplicate(a2, n2);

    if (duplicate2) {
        cout << "\n\nLa segunda matriz de entrada contiene duplicados";
    }
    else {
        cout << "\n\nLa segunda matriz de entrada no contiene ningún duplicado";
    }

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

    return 0;
}

Ejecuta el código

Guarda el código en el archivo ~/project/main.cpp y compila el código usando:

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

Comprende el código

Para comprobar duplicados en una matriz, primero creamos una función llamada containsDuplicate(). Esta función toma dos argumentos: la matriz de entrada n[] y su tamaño m. La función marca los duplicados encontrados con el valor 1, y en caso contrario con el valor 0. Para encontrar duplicados, la matriz de entrada n[] se ordena primero utilizando la función sort() definida por el sistema. Luego, se comparan los elementos adyacentes en la matriz ordenada, y la bandera se establece si se encuentran duplicados. En la función principal, se crean dos matrices de prueba a1 y a2, cada una con un posible duplicado. Utilizando containsDuplicate(), comprobamos cada matriz de duplicados y se muestra el resultado.

if (duplicate1) {
    cout << "\n\nLa primera matriz de entrada contiene duplicados";
}
else {
    cout << "\n\nLa primera matriz de entrada no contiene ningún duplicado";
}

Esta salida indicará si la matriz de entrada contiene duplicados o no.

Resumen

Las duplicaciones en las matrices se pueden determinar fácilmente utilizando el lenguaje de programación C++. Ordenando la matriz de entrada y luego comparando elementos adyacentes, es posible desarrollar un sistema de marcado eficiente para indicar valores duplicados.