Проверка массива на дубликаты

C++C++Beginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы научимся определять, содержит ли заданный массив дубликаты элементов, используя язык программирования C++. Для этого отсортируем массив и сравним соседние элементы на равенство.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp/BasicsGroup -.-> cpp/arrays("Arrays") cpp/ControlFlowGroup -.-> cpp/conditions("Conditions") cpp/ControlFlowGroup -.-> cpp/for_loop("For Loop") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/arrays -.-> lab-96122{{"Проверка массива на дубликаты"}} cpp/conditions -.-> lab-96122{{"Проверка массива на дубликаты"}} cpp/for_loop -.-> lab-96122{{"Проверка массива на дубликаты"}} cpp/output -.-> lab-96122{{"Проверка массива на дубликаты"}} cpp/code_formatting -.-> lab-96122{{"Проверка массива на дубликаты"}} end

Напишите библиотеку и главную функцию

Напишите библиотеку и главную функцию следующим образом.

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

using namespace std;

bool containsDuplicate(int n[], int m)
{
    // Создайте флаг, указывающий на наличие дубликата
    int f = 0;

    // Отсортируйте входной массив, чтобы проверить наличие дубликатов
    sort(n, n + m);

    for (int i = 0; i < m - 1; i++)
    {
        if (n[i] == n[i + 1])
        {
            // установите флаг в 1 и выйдите из цикла, если найден дубликат
            f = 1;
            break;
        }
    }

    if (f == 1) {
        // Найден дубликат
        return true;
    }
    else {
        // Дубликаты не найдены
        return false;
    }
}

int main()
{
    cout << "\n\nWelcome to LabEx :-)\n\n\n";
    cout << " ===== Программа для проверки наличия дубликатов в входном массиве  ===== \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;

    // Получите размер двух входных массивов
    n1 = sizeof(a1) / sizeof(a1[0]);
    n2 = sizeof(a2) / sizeof(a2[0]);

    // Выведите первый входной массив
    cout << "\n\nЭлементы первого входного массива:\n\n";

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

    // Проверьте, содержит ли первый входной массив дубликаты
    duplicate1 = containsDuplicate(a1, n1);

    if (duplicate1) {
        cout << "\n\nПервый входной массив содержит дубликат";
    }
    else {
        cout << "\n\nПервый входной массив не содержит дубликатов";
    }

    // Выведите второй входной массив
    cout << "\n\n\n\nЭлементы второго входного массива:\n\n";

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

    // Проверьте, содержит ли второй входной массив дубликаты
    duplicate2 = containsDuplicate(a2, n2);

    if (duplicate2) {
        cout << "\n\nВторой входной массив содержит дубликат";
    }
    else {
        cout << "\n\nВторой входной массив не содержит дубликатов";
    }

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

    return 0;
}

Запустите код

Сохраните код в файле ~/project/main.cpp и скомпилируйте код с использованием:

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

Разберитесь с кодом

Для проверки наличия дубликатов в массиве мы сначала создали функцию под названием containsDuplicate(). Эта функция принимает два аргумента: входной массив n[] и его размер m.
Функция помечает найденные дубликаты значением 1, а в противном случае значением 0. Для поиска дубликатов входной массив n[] сначала сортируется с использованием системной функции sort(). Затем сравниваются соседние элементы в отсортированном массиве, и флаг устанавливается, если найдены дубликаты.
В главной функции создаются два тестовых массива a1 и a2, каждый из которых может содержать дубликат. С помощью функции containsDuplicate() мы проверяем каждый массив на наличие дубликатов и выводим результат.

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

Этот вывод будет показывать, содержит ли входной массив дубликаты или нет.

Резюме

Дубликаты в массивах могут быть легко определены с использованием языка программирования C++. Отсортировав входной массив и сравнив соседние элементы, можно разработать эффективную систему флагов для индикации дублирующихся значений.