Как убрать лишние элементы в массиве? С++ Оформить как функцию. Массив В должен состоять из повтряющихся чисел которые идут друг за другом
#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];
}
}