
60 баллов. На С++ Сжатие массива Напишите программу, которая выполняет "сжатие массива" –
переставляет все нулевые элементы в конец массива. При этом все ненулевые элементы располагаются в начале массива в том же порядке. Входные данные Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива. Гарантируется, что 0 < N ≤ 10000 . Выходные данные Программа должна вывести в одну строчку все элементы получившегося массива, разделив их пробелами. Примеры входные данные 6 1 0 2 0 3 4 выходные данные 1 2 3 4 0 0

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

#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Rus");
int n, j;
cout << "введите длину массива ";cin >> n;
int* A = new int[n];
cout << "Введите массив " << endl;
for (int i = 0; i < n; i++) //ввод массива
{
cin >> A[i];
}
for (int i = n - 1; i >= 0; i--)
{
j = i;
while (A[j] == 0 && A[1 + j] != 0 && j + 1 < n)
{
int tmp = A[j + 1];
A[j + 1] = A[j];
A[j] = tmp;
j++;
}
}
cout << "новый массив ";
for (int i = 0; i < n; i++)
{
cout << A[i]<<" ";
}
delete[] A;
return 0;
}



Вот пример программы на C++, которая выполняет сжатие массива, переставляя все нулевые элементы в конец массива:
cpp#include <iostream>
#include <vector>
int main() {
int N;
std::cin >> N;
std::vector<int> array(N);
// Ввод элементов массива
for (int i = 0; i < N; i++) {
std::cin >> array[i];
}
// Сжатие массива
int nonZeroIndex = 0;
for (int i = 0; i < N; i++) {
if (array[i] != 0) {
std::swap(array[i], array[nonZeroIndex]);
nonZeroIndex++;
}
}
// Вывод массива
for (int i = 0; i < N; i++) {
std::cout << array[i] << " ";
}
std::cout << std::endl;
return 0;
}
Программа считывает размер массива N
и элементы массива из стандартного ввода. Затем она выполняет сжатие массива, перемещая все ненулевые элементы в начало массива. И, наконец, выводит полученный массив в одной строке, разделяя элементы пробелами.
Пример ввода:
6 1 0 2 0 3 4
Пример вывода:
1 2 3 4 0 0
Обратите внимание, что в данном примере программа использует контейнер std::vector
, который позволяет динамически изменять размер массива. Это удобно, так как заранее неизвестно, сколько ненулевых элементов будет в массиве после сжатия.


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








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