Вопрос задан 19.07.2023 в 02:35. Предмет Информатика. Спрашивает Околотович Лена.

C/C++. Преобразовать массив так, чтобы сначала шли нулевые элементы, а затем все остальные.

0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Таумарк Ренат.

#include <iostream>

using namespace std;

int main()

{

int mas[20] = {};

for (int jjj = 0; jjj < 20; jjj++)

{

cin >> mas[jjj];

if (cin.fail())

{

cin.clear();

cin.ignore(32000, '\n');

break;

};

};

cout<<"\nДо : ";

for(int jjj:mas)cout<<jjj<<" ";

for (int kkk{0} ,jjj{0}; jjj <20; jjj++)

if (mas[jjj] == 0)

swap(mas[kkk++], mas[jjj]);

cout<<"\nПосле : ";

for(int jjj:mas)cout<<jjj<<" ";

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для преобразования массива таким образом, чтобы сначала шли нулевые элементы, а затем все остальные, можно использовать следующий алгоритм:

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

Ниже представлена реализация этого алгоритма на языке C++:

cpp
#include <iostream> void moveZerosToFront(int arr[], int size) { int temp[size]; // Временный массив int index = 0; // Первый проход: помещаем нулевые элементы в начало временного массива for (int i = 0; i < size; i++) { if (arr[i] == 0) { temp[index] = arr[i]; index++; } } // Второй проход: помещаем ненулевые элементы в оставшуюся часть временного массива for (int i = 0; i < size; i++) { if (arr[i] != 0) { temp[index] = arr[i]; index++; } } // Копируем содержимое временного массива обратно в исходный массив for (int i = 0; i < size; i++) { arr[i] = temp[i]; } } int main() { int arr[] = {0, 2, 0, 4, 5, 0, 6, 0}; int size = sizeof(arr) / sizeof(arr[0]); std::cout << "Исходный массив: "; for (int i = 0; i < size; i++) { std::cout << arr[i] << " "; } moveZerosToFront(arr, size); std::cout << "\nМассив после преобразования: "; for (int i = 0; i < size; i++) { std::cout << arr[i] << " "; } return 0; }

Пример вывода:

Исходный массив: 0 2 0 4 5 0 6 0 Массив после преобразования: 0 0 0 0 2 4 5 6

Теперь все нулевые элементы находятся в начале массива, а все остальные элементы сохраняют свой относительный порядок.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос