C/C++

Помогите решить C++

Написать функцию, которая получает указатель на динамический
массив и его размер. Функция должна удалить из массива все
отрицательные числа и вернуть указатель на новый динамический
массив
 #include  
#include
#include
#include
using namespace std;
int* cut_negative(int* box, size_t& n) {
auto non_negative = [](int x) { return x >= 0; };
auto length = count_if(box, box + n, non_negative);
if (length != n) {
auto fox = new int[length];
for (size_t i = 0, j = 0; i < n; ++i) {
if (box[i] >= 0) {
fox[j] = box[i];
++j;
}
}
delete[] box;
n = length;
return fox;
}
delete[] box;
n = 0;
return nullptr;
}
void show(int* box, const size_t n) {
for (size_t i = 0; i < n; ++i) cout
ДО
Дилмурод Оллояров
92 469
Лучший ответ
#include <iostream>

int* removeNegativeNumbers(int* arr, int size, int& newSize) {
// Подсчитываем количество положительных чисел
int count = 0;
for (int i = 0; i < size; i++) {
if (arr[i] >= 0) {
count++;
}
}

// Создаем новый динамический массив с положительными числами
int* positiveArr = new int[count];
int j = 0;
for (int i = 0; i < size; i++) {
if (arr[i] >= 0) {
positiveArr[j] = arr[i];
j++;
}
}

// Обновляем значение newSize
newSize = count;

// Освобождаем память, занятую исходным массивом
delete[] arr;

// Возвращаем указатель на новый динамический массив
return positiveArr;
}

int main() {
int size;
std::cout << "Введите размер массива: ";
std::cin >> size;

int* arr = new int[size];
std::cout << "Введите элементы массива:\n";
for (int i = 0; i < size; i++) {
std::cin >> arr[i];
}

int newSize;
int* positiveArr = removeNegativeNumbers(arr, size, newSize);

std::cout << "Новый массив без отрицательных чисел:\n";
for (int i = 0; i < newSize; i++) {
std::cout << positiveArr[i] << " ";
}
std::cout << std::endl;

// Освобождаем память, занятую новым массивом
delete[] positiveArr;

return 0;
}