Удалить из массива дубликаты элементов
Написать функцию: int arrayUnique(int array[], int size), которая будет удалять из массива дубликаты элементов, и в конце работы вернёт новую длину массива.
Предлагаю для решения этой задачи организовать заполнение массива случайными числами. Это сократит время на ввод элементов двумерного массива.
// new_line_array.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
int arrayUnique(int *ar, int);
int main(int argc, char* argv[])
{
srand(time(NULL));
const int array_size = 20; // размер массива
const int interval = 10; // масштаб генерируемых случайных чисел
int ar[array_size];
for (int counter1 = 0; counter1 < array_size; counter1++)
{
ar[counter1] = rand() % interval; // заполняем массив случайными числами
cout << ar[counter1] << " "; // печать элементов массива
}
cout << "\n";
for (int counter1 = 0; counter1 < arrayUnique(ar, array_size)/*вызов функции отбора значений*/; counter1++)
{
cout << ar[counter1] << " "; // печать элементов массива
}
cout << endl;
system("pause");
return 0;
}
int arrayUnique(int *ar, int size) // функция, определяющая элементы массива в единственном экземпляре
{
for (int counter1 = 0; counter1 < size; counter1++)
{
for (int counter2 = counter1 + 1; counter2 < size ; counter2++)
{
if ( ar[counter1] == ar[counter2] ) // если найден одинаковый элемент
{
for (int counter_shift = counter2; counter_shift < size -1; counter_shift++)
{
// выполнить сдвиг всех остальных элементов массива на -1, начиная со следующего элемента, после найденного дубля
ar[counter_shift] = ar[counter_shift + 1];
}
size -= 1; // уменьшить размер массива на 1
if (ar[counter1] == ar[counter2]) // если следующий элемент - дубль
{
counter2--; // выполнить переход на предыдущий элемент
}
}
}
}
return size;
}
Комментарии:
Нету комментариев для вывода...