Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сравнение массивов


RDS ©   (2006-01-10 18:24:00) 

Добрый вечер.
Вопрос следующий. Имеем


var
 a,                       // заполнен
 b,                       // заполнен
 c : array of integer;    // сформировать


Массивы a,b заполнены, длина массивов в общем случае разная, вс значения элементов внутри каждого массива уникальны. Требуется сформировать на основе а и b массив с, в который войдут значения, которые имеются только в одном из массивов


RDS   (2006-01-10 20:12:00) [1]

Так лучше чем я сделал. Я брал два временных массива, потом убивал в них дубликаты, потом сливал в один.
Спасибо.


MBo   (2006-01-10 20:07:00) [2]

Сливаем массивы вместе, сортируем за NlgN, затем одним проходом выбрасываем дубликаты (путем сдвига)


RDS   (2006-01-10 19:59:00) [3]

Джо ©   (10.01.06 18:47) [5]
Не задачка. С алгоритмом не получается. Хотелось без временных массивов, пока не выходит.
Leonid Troyanovsky ©   (10.01.06 18:57) [6]
Массивы именно динамические. Поскольку заранее неизвестно кол-во их элементов. и процитирую самого себя :
=======================
длина массивов в общем случае разная
=======================

Впрочем все уже сделано, но мне как-то не нравится. Может кто подкинет свое решение задачи, если вдруг стало интересно.
ЗЫ. Свой вариант пока не выкладываю, дабы не повлиять на возможные ответы


Leonid Troyanovsky   (2006-01-10 19:01:00) [4]


> Джо ©   (10.01.06 18:58) [7]

> > c : array of integer;    // сформировать

> :-)


Возможно, что опчепятка.

--
Regards, LVT.


Джо   (2006-01-10 18:58:00) [5]

[6] Leonid Troyanovsky ©   (10.01.06 18:57)
> Во-вторых, а вдруг, все же, не динамические массивы.


См [0]:

> c : array of integer;    // сформировать


:-)


Leonid Troyanovsky   (2006-01-10 18:57:00) [6]


> Джо ©   (10.01.06 18:47) [5]

> Ну, SetLength все-таки придется использовать. Тем более
> в свете того, что, перед нами


Во-первых, в своих предположениях мы не должны опускаться до такого.
Во-вторых, а вдруг, все же, не динамические массивы.
Тем более, что они не очень популярны в академической  среде.

--
Regards, LVT.


Джо   (2006-01-10 18:47:00) [7]

> [4] Leonid Troyanovsky ©   (10.01.06 18:41)

Ну, SetLength все-таки придется использовать. Тем более в свете того, что, перед нами наверняка ученическая задачка или лабораторная работа.


Leonid Troyanovsky   (2006-01-10 18:41:00) [8]


> Джо ©   (10.01.06 18:34) [3]

> + процедуры и функции для работы с дин. массивами: High,
>  SetLength.


Скорее, цикл with SizeOf & CompareMem.

--
Regards, LVT.


Джо   (2006-01-10 18:34:00) [9]

> [1] Плохиш ©   (10.01.06 18:29)
> Надо использовать циклы и оператор сравнения на равенство.

+ процедуры и функции для работы с дин. массивами: High, SetLength.


Плохиш   (2006-01-10 18:29:00) [10]

Надо использовать циклы и оператор сравнения на равенство.


Johnmen   (2006-01-10 18:29:00) [11]

А в чём затруднение?


Наверх

Титульная страница Поиск, карта сайта Написать письмо