Форум: "Начинающим";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];
ВнизУдаление элементов из масива Найти похожие ветки
← →
Алексей1985 (2008-09-22 07:42) [0]Здравствуйте,извиняюсь за элеменатрный вопрос, но очень нужна помощь. Подскажите пожалуйста алгоритм удаления нескольких элементов массива по условию, или исправьте мой:
(Var A : array of integer; i, n , cell : integer; cell2: AnsiString;)
{Массив уже заполнил рандомом}
For i:=0 to n-1 do
begin
cell2:=inttostr(A[i]);
cell:=i;
If AnsiRightStr(cell2, 1) = "0" then {Оканчивается ли элемент на 0?}
begin
For i:=cell to n-1 do
A[i]:=A[i+1];
n:=n-1
end
end;
Проблема в том что он удаляет только первый удовлетворяющий условию элемент.
Спасибо.
← →
MBo © (2008-09-22 07:46) [1]
j := 0;
for i := 0 to High(A) do
if (A[i] mod 10) = 0 then
Inc(j)
else {if j <> 0 then //добавить, если удаляемых элементов предполагается мало}
A[i - j] := A[i];
← →
Алексей 1985 (2008-09-22 08:40) [2]MBo, Огромное спасибо!
← →
Anatoly Podgoretsky © (2008-09-22 09:03) [3]> Алексей1985 (22.09.2008 7:42:00) [0]
Какой то особо бессмысленный код, особенно интересно с вложеным циклом.
← →
Алексей 1985 (2008-09-22 21:41) [4]
> Anatoly Podgoretsky © (22.09.08 09:03) [3]
Ну как я задумывал, во внешнем цыкле происходит поиск элемента, удовлетворяющего условию. А во вложенном удаление этого элемента.
← →
Германн © (2008-09-23 00:50) [5]
> Anatoly Podgoretsky © (22.09.08 09:03) [3]
Хм. Вот самому стало интересно узнать как компилятор обслужит данный код. Когда во внутреннем цикле в качестве "переменной цикла" в коде используется та же переменная, что и во внешнем.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.015 c