C++ удалить нули из массива

149
30 августа 2019, 05:10

В первой строке задана длина исходного массива. Во второй - сам массив. Удалить из массива нули, вывести обновлённый массив. Если он оказался пустым, вывести "NO".

#include <iostream>
using namespace std;
void del (int *arr, int &i, int &n)
{
  n--;
  for (int j=i;j<n;j++)
  {
    arr[j] = arr[j+1];
  }
}
int main()
{
  int n;
  cin >> n;
  int *arr = new int[n];
  for (int i=0;i<n;i++)
  {
    cin >> arr[i];
  }
  for (int i=0;i<n;i++)
  {
    if (arr[i]==0) del(arr,i,n);
  }
  for (int i=0;i<n;i++)
  {
    cout << arr[i] << " ";
  }
  return 0;
}

При вводе

5
0 0 0 0 0

выводит

0 0
Answer 1

Удаление на месте:

int removed = 0;
for (int i=0;i<n;i++)
{
   if (arr[i]==0)
      removed++;
   else
      arr[i-removed] = arr[i]; 
}

И в конце вывести начало массива длиной n-removed (реального изменения длины задача вроде не требует)

READ ALSO
быстрое логическое ИЛИ двух векторов long

быстрое логическое ИЛИ двух векторов long

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

111
Сложение массивов путем объединения

Сложение массивов путем объединения

Понимаю, что много вопросов на эту тему уже писалиМне нужно написать программу, которая будет объединять два массива, записывая в 3

188
Отправка multipart form-data на ssl сервер c++

Отправка multipart form-data на ssl сервер c++

В общем над проблемой бьюсь вторые суткиДело в отправке простого multipart/form-data запроса на ssl сервер

109
Количество точек в прямоугольнике

Количество точек в прямоугольнике

Линейный массив A содержит 2*N элементов, значения которых задаются по следующей формуле a[i]:=10*sin(N+i*i)Элементы массива нумеруются с единицы

136