
Задание 1. Сжать (сдвинуть элементы) массив, удалив из него все 0, и заполнить освободившиеся
справа элементы значениями -1. C++

Ответы на вопрос

#include <iostream>
#include <vector>
#include <set>
using namespace std;
void shrink(int* arr, int size) {
int* t = new int[size];
int j = 0;
for(int i = 0; i<size; ++i) {
if(arr[i] != 0) {
t[j] = arr[i];
++j;
}
}
while(j < size) {
t[j] = -1;
++j;
}
for(int i = 0; i<size; ++i) {
arr[i] = t[i];
}
delete[] t;
}
int main() {
int size;
cin >> size;
int* arr = new int[size];
for(int i = 0; i<size; ++i) {
cin >> arr[i];
}
shrink(arr, size);
for(int i = 0; i<size; ++i) {
cout << arr[i] << " ";
}
}
Ввод:
5
1 0 0 0 3
Вывод:
1 3 -1 -1 -1



Чтобы выполнить задание и сжать массив, удалив все элементы, равные 0, и заполнить освободившиеся справа элементы значениями -1, можно использовать следующий алгоритм:
1. Создать новый массив с тем же размером, что и исходный массив. 2. Создать переменную, которая будет отвечать за индекс нового массива (начальное значение - 0). 3. Пройти по каждому элементу исходного массива: - Если элемент не равен 0, поместить его в новый массив по текущему индексу и увеличить значение индекса на 1. 4. Заполнить оставшиеся элементы нового массива значениями -1. 5. Заменить исходный массив на новый массив.
Пример кода на языке Python:
```python def compress_array(arr): new_arr = [0] * len(arr) index = 0
for element in arr: if element != 0: new_arr[index] = element index += 1
for i in range(index, len(new_arr)): new_arr[i] = -1
return new_arr
# Пример использования array = [1, 0, 3, 0, 5, 0, 7] compressed_array = compress_array(array) print(compressed_array) ```
В данном примере исходный массив `[1, 0, 3, 0, 5, 0, 7]` будет сжат в `[1, 3, 5, 7, -1, -1, -1]`. Элементы, равные 0, удалены, а освободившиеся элементы в конце массива заполнены значением -1.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili