C/C++

Нужна помощь в составлении одномерных массивов С++

1. Сформировать статический массив из n элементов с помощью датчика
случайных чисел (n задается пользователем с клавиатуры).
2. Распечатать полученный массив.
3. Выполнить удаление указанных элементов из массива.
(все четные элементы)
4. Вывести полученный результат.
5. Выполнить добавление указанных элементов в массив.
( К элементов в конец массива)
6 .Вывести полученный результат.
7. Выполнить перестановку элементов в массиве.
(Положительные элементы переставить в начало массива, отриц. - в конец)
8. Вывести полученный результат.
9. Выполнить поиск указанных в массиве элементов.
(Первый отрицательный)
10. Вывести полученный результат.
объявить статический массив на 100 элементов, но
формировать массив из n элементов, n<100.

Буду признателен и постараюсь понять.
#include <iostream>
using namespace std;

void arr_fill(int* arr, size_t size) //заполнение массива
{
srand(time(NULL));
for (size_t i = 0; i < size; i++) arr[i] = rand() % 101 - 50;
}

void arr_print(int* arr, size_t size) //печать элементов
{
for (size_t i = 0; i < size; i++) cout << arr[i] << " ";
cout << endl;
}

void arr_del_2(int* arr, size_t& size) //удаление четных (от нуля) элементов (размер по ссылке)
{
for (size_t i = 0; i < size; i++)
{
if (i < size / 2) arr[i] = arr[i * 2 + 1]; else arr[i] = 0;
}
size /= 2; //уменьшение размера
}

void arr_add(int* arr, size_t& size, size_t k) //добавление к элементов (размер принимается по ссылке)
{
if ((size + k) > 100) { cout << "Невозможно добавить новые элементы!\n"; return; }
for (size_t i = size; i < size + k; i++) arr[i] = rand() % 101 - 50;
size += k; //увеличение размера в программе
}

void arr_sort(int* arr, size_t size) //сортировка положит>0>отрицательные методом простого пузырька
{
bool chk;
do {
chk = false; //проверка перестановки
for (size_t i = 1; i < size; i++)
if ((arr[i] >= 0 && arr[i - 1] < 0)||arr[i]>0&&arr[i-1]==0) {
swap(arr[i], arr[i - 1]); chk = true;
} size--; //уменьшение диапазона каждого прохода на 1
} while (chk);
}

size_t arr_find(int* arr, size_t size) //находит индекс первого отрицательного или -1 если не найдено
{
for (size_t i = 0; i < size; i++) if (arr[i] < 0) return i;
return -1;
}

int main()
{
setlocale(0, "");
int arr[100]{}; //статический массив на 100 элементов
size_t n;
size_t k;
cout << "введите размер массива (не более 100):\n";
cin >> n;
if (n > 100)
{
cout << "Размер превышает допустимый!"; return 1;
}
arr_fill(arr, n);
arr_print(arr, n);
arr_del_2(arr, n);
arr_print(arr, n);
cout << "введите количество элементов, которое нужно добавить\n";
cin >> k;
arr_add(arr, n, k);
arr_print(arr, n);
arr_sort(arr, n);
arr_print(arr, n);
if ((k = arr_find(arr, n)) != -1) cout << "первый минимальный элемент: " << arr[k]; else cout << "Нет отрицательных элементов.";
}
АА
Андрій Абрамчук
51 411
Лучший ответ