Введение
В этом практическом занятии мы научимся определять, содержит ли заданный массив дубликаты элементов, используя язык программирования C++. Для этого отсортируем массив и сравним соседние элементы на равенство.
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
В этом практическом занятии мы научимся определять, содержит ли заданный массив дубликаты элементов, используя язык программирования C++. Для этого отсортируем массив и сравним соседние элементы на равенство.
Напишите библиотеку и главную функцию следующим образом.
#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++. Отсортировав входной массив и сравнив соседние элементы, можно разработать эффективную систему флагов для индикации дублирующихся значений.