Как убрать лишние элементы в массиве? С++ Оформить как функцию. Массив В должен состоять из повтряющихся чисел которые идут друг за другом

#include <iostream>
using namespace std;



int* read_array(int N)  // Функция вводящая элементы и размерность динамического массива А
{
    int* read_array = new int[N];

    for (int i = 0; i < N; i++)
    {
        read_array[i] = rand() % 3;
    }

    return read_array;
}



int* check_read_array(int arr[],int N)  // Функция вводящая элементы и размерность динамического массива А
{
    int* check_read_array = new int[N];
    
    int Count = 0;

    for (int j = 0; j < N; j++)
    {
        if (arr[j] == arr[j + 1])
        {
            check_read_array[Count++] = arr[j];
        }
    }


    return check_read_array;
    
}


void print_array(int arr[], int N) // Вывод массива А
{
    cout << "\nВывод массива в прямом порядке из " << N << " элементов" << endl;

    for (int i = 0; i < N; i++)
    {
        cout << arr[i] << endl;
    }

}

void print_array_checked(int checked_array[], int N) // Вывод массива В
{
    cout << "Вывод массива с одинаковыми числами" << endl;

    for (int i = 0; i < N; i++)
    {
        cout << checked_array[i] << endl;
    }

}


int main()
{
    setlocale(LC_ALL, "Russian");

    int N = 0; //Количество элементов массива, количество элементов в массиве

    cout << "Введите размерность и количество элементов массива" << endl;

    cin >> N;

    cout << "Введенное число = " << N << endl;

    int* arr = read_array(N); // Функция вводящая элементы и размерность динамического массива А

    int* checked_array = check_read_array(arr, N); // Функция вводящая элементы и размерность динамического массива В

    print_array(arr, N); //Вывод массива А

    print_array_checked(checked_array, N); //Вывод массива В



    //Освобождение памяти после динамического массива

    delete[] arr;
    delete[] checked_array;
}

Ответы (1 шт):

Автор решения: Moskalt

Программа не ломается в цикле?

for (int j = 0; j < N; j++)
    {
        if (arr[j] == arr[j + 1])
        {
            check_read_array[Count++] = arr[j];
        }
    }

выход за границы массива (j+1)

можно сделать так:

 for (int j = 1; j < N; j++)
    {
        if (arr[j] == arr[j-1])
        {
            check_read_array[Count++] = arr[j-1];
        }
    }
→ Ссылка