C++

Удалить из массива дубликаты элементов

Написать функцию: 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;
}
Теги:
массив
Добавлено: 11 Апреля 2018 10:34:14 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...