|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.08.2010, 10:15 | #1 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Корректное удаление элементов массива
С жары чего-то не догоню .
Смысл в следующем. Имеется список значений. Элементы с этими значениями (не индексами) должны быть удалены. Функция поиск индекса массива по значению есть. ЗЫ. Массив динамический -----ДОБАВЛЕНО:------------------ Пример. Имеется два массива: А[1]:='ааа'; А[2]:='ааб'; А[3]:='аав'; А[4]:='ааг'; А[5]:='аап'; А[6]:='аар'; А[7]:='аао'; А[8]:='аал'; и B[1]:='ффф'; B[2]:='ааа'; B[3]:='аап'; В результате работы этой функции в массиве A должны остаться только элементы 'aaa' и 'аап'
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 10.08.2010 в 10:33. |
10.08.2010, 10:29 | #2 |
Погулять вышел
Участник клуба
Регистрация: 17.05.2010
Сообщений: 1,573
|
Так а в чем суть вопроса? Если есть индексы, то и удалить можно:
Код:
Никогда не знаешь, где тебе повезет... (Фрай)
|
10.08.2010, 10:46 | #3 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Типа того, но не все так просто. Как только ты удалишь срединный элемент, индексы сместятся. Это первое. И второе в цикле идет одно число элементов, но как только ты удалишь хоть один элемент, то их число станет меньше. Это чревато двумя последствиями. Первое - половина индексов будет пропущена. Второе - переменная i получит значение большее чем текущее число элементов в массиве.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 10.08.2010 в 11:00. |
10.08.2010, 11:02 | #4 |
Погулять вышел
Участник клуба
Регистрация: 17.05.2010
Сообщений: 1,573
|
может тогда рекурсией, с вызовом после удаления?
Никогда не знаешь, где тебе повезет... (Фрай)
|
10.08.2010, 11:03 | #5 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
При большом числе элементов выпадает в Access Violation (еще до наступления Stack Overflow).
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
10.08.2010, 11:05 | #6 |
220400
Форумчанин
Регистрация: 21.05.2010
Сообщений: 726
|
Создай еще 3й динамический массив типа integer, и в него записывай индексы, которые совпадают в массивах А и В. Затем на основе сохраненных индексов создаешь результирующий массив
ПС: кондиционер надо покупать)
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам. Не учите человека, если вы не его учитель. |
10.08.2010, 11:09 | #7 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Создание третьего массива не Айс . Это утрированный пример. Массивы имеют сложные структуры, создание которых накладно как по времени, так и по занимаемому объему.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
10.08.2010, 11:12 | #8 |
Погулять вышел
Участник клуба
Регистрация: 17.05.2010
Сообщений: 1,573
|
или как вариант. Ищешь в массиве нужные значения, а все A[i], которые не подходят заносишь в STringlist (столбиком). После прохода по массиву, запускаешь цикл удаления элементов массивов согласно стринглисту. Только в обратном порядке, чтобы индексы не смещались
Либо вообще, искомое куда-нибудь сохраняем, потом очищаем массив и добавляем сохраненное искомое...
Никогда не знаешь, где тебе повезет... (Фрай)
Последний раз редактировалось DIgorevich; 10.08.2010 в 11:15. |
10.08.2010, 11:17 | #9 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Есть другой вариант: считывать массив и удалять элементы нужно сверху вниз, тогда на смещение индексов будет наплевать. downto.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
10.08.2010, 11:29 | #10 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Можно так
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление и перемещение элементов массива в паскале | Devilman | Помощь студентам | 4 | 21.04.2010 15:17 |
Удаление элементов из массива | Jasper92 | Общие вопросы C/C++ | 3 | 06.03.2010 13:04 |
Удаление, сортировка элементов массива. | Vadim123456 | Помощь студентам | 8 | 14.02.2010 23:43 |
удаление одинаковых элементов из массива | sauron99 | Общие вопросы Delphi | 6 | 15.04.2009 21:27 |
Удаление элементов из динамического массива | dashulka | Общие вопросы Delphi | 4 | 31.10.2008 14:03 |