Как удалить элементы массива?
Если большая часть массива будет содержать нули, то удалить все нулевые элементы из массива (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] << " ";
}