магазин Лувр

Дан целочисленный массив размера N. Вставить перед каждой его серией элемент с нулевым значением. C++

Целочисленные массивы – это одна из самых распространенных структур данных в программировании. Есть много ситуаций, когда необходимо вставить значения в массив, и в данной статье мы рассмотрим, как вставить перед каждой серией элементов с нулевым значением.

Для начала необходимо определиться с алгоритмом решения этой задачи. Рассмотрим следующие шаги:

  1. Создаем новый массив, который будет содержать элементы исходного массива, а также добавленные элементы с нулевым значением.
  2. Проходим по исходному массиву и добавляем его элементы в новый массив.
  3. Если осуществляемый перебор показывает, что элементы идут подряд и не являются серией элементов с нулевым значением, добавляем ноль в новый массив.
  4. После завершения прохода, вернем новый массив в качестве результата.

Посмотрим на реализацию этого алгоритма на языке C++, используя стандартную библиотеку.

#include <iostream>
#include <vector>

std::vector<int> insert_zeros(std::vector<int>& arr) {
    std::vector<int> res;
    for (int i = 0; i < arr.size(); i++) {
        res.push_back(arr[i]);
        if (i + 1 < arr.size() && arr[i] != 0 && arr[i + 1] == 0) {
            res.push_back(0);
        }
    }
    return res;
}

int main() {
    std::vector<int> arr{1, 2, 0, 0, 3, 4, 5, 0, 0};
    std::vector<int> res = insert_zeros(arr);
    for (int i = 0; i < res.size(); i++) {
        std::cout << res[i] << " ";
    }
    std::cout << std::endl;
    return 0;
}

В данной реализации мы используем контейнер std::vector, поскольку он более удобен для работы с динамически изменяемыми массивами. Метод insert_zeros принимает один массив и возвращает новый массив, в котором были вставлены значения нулей перед каждой серией элементов с нулевым значением.

Проходим по исходному массиву и добавляем значения его элементов в новый массив. В условии, если следующий элемент равен нулю, то это очевидно серия элементов с нулевым значением, и мы добавляем 0 в новый массив. Функция возвращает новый массив результата.

Запуск данного кода приведет к выводу нового массива, в котором были добавлены значения нулей перед каждой серией элементов.

1 2 0 0 0 3 4 5 0 0

Теперь вы знаете, как вставить значение нуля перед каждой серией элементов с нулевым значением в целочисленный массив на С++.