Список форумов   Список форумов  

Удаление "дубликатов" в массиве

Всё о программировании на Labview

Модераторы: Техподдержка NI, Robert, Модератор

Удаление "дубликатов" в массиве

Сообщение FreedomF1ghter » Сб мар 23, 2013 7:35 pm

У меня есть массив, но не чисел, а кластеров. Кластер содержит в себе 4 числа (для вопроса нет смысла рассказывать что это) и массив из чисел.
Есть кластеры, имеющие одинаковые вот эти самые массивы. И дубликат необходимо удалить

Вопрос как?
Знаю что через циклы и тп, но я уже все перепробовал, не могу придумать.
Пробовал прогонять через циклы получать номера дубликатов, но тогда надо сортировать их самих - удалять "соответствующую пару"
Пробовал удалять совпадающие по массиву кластеры прямо в циклах while с использованием Shift регистра
Но никак не выходит :(

Может быть существует какой-то общий подход к такой "чистке" массива. Заранее спасибо
FreedomF1ghter
 
Сообщений: 3
Зарегистрирован: Сб мар 23, 2013 7:29 pm

Re: Удаление "дубликатов" в массиве

Сообщение IvanLis » Сб мар 23, 2013 8:11 pm

FreedomF1ghter писал(а):Может быть существует какой-то общий подход к такой "чистке" массива. Заранее спасибо

Существует, но нужно рассматривать каждый конкретный случай.
Выложите свои потуги в этом направлении, самое главное, что бы были данные (массив кластеров) которые вы обрабатываете. Т.е. установите значение массива с данными, как значение по умолчанию, и сохраните файл.
Так будет проще Вам и другим не придется выдумывать данные.
Знание нескольких принципов освобождает от знания многих фактов!

Живу я здесь ||| LabVIEW Portal in Google+
IvanLis
Специалист LabVIEW
 
Сообщений: 497
Зарегистрирован: Пн апр 23, 2007 1:44 pm
Откуда: СССР

Re: Удаление "дубликатов" в массиве

Сообщение FreedomF1ghter » Вс мар 24, 2013 4:16 pm

В общем задача немного изменилась, но суть осталась та же.

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

В прикрепленном vi - формируется массив из кластеров, каждый из которых содержит массив целых чисел. Но в моей задаче не важен порядок чисел в массивах целых чисел, главное чтобы не было "дублей" - то есть кластер с массивом 0,1,2 и кластер с массивом 0,2,1 с точки зрения моей задачи - одно и то же. То есть мне надо очистить массив от данных "дубликатов".

Понятно, что сначала необходимо упорядочить эти массивы целых чисел и просто создавать новый массив кластеров, копируя туда неповторные элементы, но тогда я столкнулся с проблемой - длина массива целых чисел не фиксирована (для массивов c одинаковыми длинами уже нашел способ удаления "дубликатов")

Итого в результате преобразований в конце этого примера должен получиться массив из трех кластеров, которые будут содержать массивы 0,1,2; 1,2,3; 1,2,3,4
Вложения
Question.vi
(8.73 KiB) Скачиваний: 50
FreedomF1ghter
 
Сообщений: 3
Зарегистрирован: Сб мар 23, 2013 7:29 pm

Re: Удаление "дубликатов" в массиве

Сообщение IvanLis » Вс мар 24, 2013 5:29 pm

FreedomF1ghter писал(а):Итого в результате преобразований в конце этого примера должен получиться массив из трех кластеров, которые будут содержать массивы 0,1,2; 1,2,3; 1,2,3,4


Только не спрашивайте "как?"...
Question (1).vi
(10.41 KiB) Скачиваний: 68

1.png
1.png (15.16 KiB) Просмотров: 1263


Если немного оптимизировать, то сортировку и сравнение именно массивов лучше делать если их длина совпадает. Если длина разная, то они априори различны и в их сравнении необходимости уже нет.

------------------------------
И на будущее... к составным элементам структуры лучше обращаться по имени, по этому я присвоил им имя.
Знание нескольких принципов освобождает от знания многих фактов!

Живу я здесь ||| LabVIEW Portal in Google+
IvanLis
Специалист LabVIEW
 
Сообщений: 497
Зарегистрирован: Пн апр 23, 2007 1:44 pm
Откуда: СССР


Вернуться в LabVIEW

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron