Verificar Array por Duplicatas

C++Beginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos como determinar se um determinado array contém duplicatas ou não, usando a linguagem de programação C++. Isso será alcançado através da ordenação do array e, em seguida, comparando elementos adjacentes para verificar a igualdade.

Escrever a Biblioteca e a Função Principal

Escreva a biblioteca e a função principal da seguinte forma.

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

using namespace std;

bool containsDuplicate(int n[], int m)
{
    // Create a flag to indicate the presence of duplicate
    int f = 0;

    // Sort the input array to check for duplicates
    sort(n, n + m);

    for (int i = 0; i < m - 1; i++)
    {
        if (n[i] == n[i + 1])
        {
            // set the flag to 1 and exit the loop if dupliate is found
            f = 1;
            break;
        }
    }

    if (f == 1) {
        // Duplicate found
        return true;
    }
    else {
        // No duplicates found
        return false;
    }
}

int main()
{
    cout << "\n\nWelcome to LabEx :-)\n\n\n";
    cout << " ===== Program to check if any duplicates are present in the input array  ===== \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;

    // Get the size of the two input arrays
    n1 = sizeof(a1) / sizeof(a1[0]);
    n2 = sizeof(a2) / sizeof(a2[0]);

    // Print the first input array
    cout << "\n\nThe elements of the first input array are :\n\n";

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

    // Check if the first input array contains duplicates
    duplicate1 = containsDuplicate(a1, n1);

    if (duplicate1) {
        cout << "\n\nThe first input array contains duplicate";
    }
    else {
        cout << "\n\nThe first input array does not contain any duplicate";
    }

    // Print the second input array
    cout << "\n\n\n\nThe elements of the second input array are :\n\n";

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

    // Check if the second input array contains duplicates
    duplicate2 = containsDuplicate(a2, n2);

    if (duplicate2) {
        cout << "\n\nThe second input array contains duplicate";
    }
    else {
        cout << "\n\nThe second input array does not contain any duplicate";
    }

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

    return 0;
}

Executar o Código

Salve o código no arquivo ~/project/main.cpp e compile-o usando:

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

Compreender o Código

Para verificar a existência de duplicatas em um array, primeiramente criamos uma função chamada containsDuplicate(). Esta função recebe dois argumentos - o array de entrada n[] e seu tamanho m. A função sinaliza duplicatas encontradas com o valor 1 e, caso contrário, com o valor 0. Para encontrar duplicatas, a entrada n[] é primeiramente ordenada usando a função sort() definida pelo sistema. Em seguida, elementos adjacentes no array ordenado são comparados, e a flag é definida se duplicatas forem encontradas.

Na função principal, dois arrays de teste a1 e a2 são criados, cada um com uma potencial duplicata. Usando containsDuplicate(), verificamos cada array em busca de duplicatas e exibimos o resultado.

if (duplicate1) {
    cout << "\n\nThe first input array contains duplicate";
}
else {
    cout << "\n\nThe first input array does not contain any duplicate";
}

Esta saída indicará se o array de entrada contém duplicatas ou não.

Resumo

Duplicações em arrays podem ser facilmente determinadas usando a programação C++. Ao ordenar o array de entrada e, em seguida, comparar elementos adjacentes, é possível desenvolver um sistema eficiente de sinalização para indicar valores duplicados.