Как удалить элементы массива?

Если большая часть массива будет содержать нули, то удалить все нулевые элементы из массива (c сохранением порядка следования остальных элементов). Как это можно сделать?

#include <iomanip>

using namespace std;

int main() {
    int n;
    cout << "enter the dimension of the array: ";
    cin >> n;
    cout << "enter the array: ";
    
   int* A = new int [n];
    for (int i = 0; i < n; i++)
        cin >> A[i];
    cout << "A[n]= ";
    for (int i = 0; i < n; i++)
        cout  << A[i] << " ";
    cout << endl;

    

    int indmax, indmin, max, min;
    indmax = 1;
    max = A[indmax];
    for (int i = 1; i < n; i++){
        if (A[i] >= max) {
            max = A[i];
            indmax = i;
        }
    }

    indmin = 1;
    min = A[indmin];
    for (int i = 1; i < n; i++) {
        if (A[i] <= min) {
            min = A[i];
            indmin = i;
        }
    }

    if (indmin < indmax) {
        for (int i =( indmin + 1); i < (indmax - 1); i++) {
            A[i] = 0;
        }
    }
    else {
        for (int i = (indmax + 1); i <( indmin - 1); i++) {
            A[i] = 0;
        }
    }

    for (int i = 0; i < n; i++) {
        cout << A[i] << " ";
    }

    delete[]A;
    return 0;

}

Ответы (1 шт):

Автор решения: Mikhailo
int N = 0;
for (int i = 0; i < n; i++)
    if (A[i]) A[N++] = A[i];

// Если надо именно массив без нулей
int * B = new int[N];
for (int i = 0; i < N; i++) B[i] = A[i];
delete[]A;
A = B;
n = N;


for (int i = 0; i < n; i++) {
    cout << A[i] << " ";
}
→ Ссылка