Консультация № 136922
15.05.2008, 12:11
0.00 руб.
0 1 1
Здравствуйте! Помогите пожалуйста с задачкой:

Сформировать одномерный динамический массив с помощью генератора случайных чисел и удалить в нем все непарные элементы.

Я думаю, что непарные элементы можно по-одному определять путем деления (с остатком на 2), а как же тогда реализовать удаление!?
Если можно с обьяснениями в коде, заранее спасибо!

Обсуждение

Неизвестный
15.05.2008, 14:32
общий
это ответ
Здравствуйте, Sashka!

(без кода, просто общая идея)
Если есть динамический массив, то должна быть переменная, отвечающая за его текущую длину.

int iLength.
int *pInt;
...
pInt = new int[1000];
...
for(int i=0; i<1000; i++)
pInt = 10;
iLength = 1000;
// тут важно помнить, что массивы индексируются с нуля, поэтому последний элемент не 1000-й, а 999-й, или iLength-1-й

//удаление делается путём сдвига на один назад всех элементов массива начиная с удаляемогого

int iDel = 545; // удалим 545-й

for(int i=iDel-1; i<iLength-1; i++)
pInt[i] = pInt[i+1];
iLength = iLength-1; // массив стал на 1 меньше.

PS. в с++ стандарте есть втроенные массивы, которые сами следят за границами, сами при удалении всё сдвигают.
это например stl::vector<data_type>
Форма ответа