Удалить в массиве первую группу подряд идущих отрицательных элементов

Рейтинг: 0Ответов: 1Опубликовано: 11.01.2023

Нашел начало первой идущей последовательности, конец, даже количество элементов этой последовательности, но как их удалить не понимаю. Пробовал через условие в цикле: if(i < beg || i >end) new_a[i] = a[i]. Получался какой-то бред числа вроде -8604603

void delNegativeNum(int*& a, int& n) {
    int j = -1;
    for (int i = 0; i < n - 1; i++) {
        if (a[i] < 0 && a[i + 1] < 0) {
            j = i;
        }
        if (j != -1) break;
    }

    int beg = j, count = 0;
    while (a[j] < 0 and j < n)
    {
        count++;
        j++;
    }
    int end = j - 1;
    int new_size = n + 1 - end - beg;
    int* new_a = new int[new_size];
    }
}

Ответы

▲ 0

Если на первой же итерации не выполняется условие

    if (a[i] < 0 && a[i + 1] < 0) {
        j = i;
    }

То цикл тут же завершается на

    if (j != -1) break;