Разбивание массива

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
Ответить
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Разбивание массива

Сообщение Eugen Graf »

Привет!

Вот что то не могу сделать, наверное пора домой идти уже.

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

55
55
66
66
66
99

должно получится три массива:

55
55

66
66
66

99

Как это сделать? На всякий случай выкладываю картинку, я конечно обьяснил упрощённо.

Заранее спасибо.
Вложения
SplitArray.png
Аватара пользователя
Korotenko

Activity
developer
developer
Сообщения: 286
Зарегистрирован: 25 июл 2008, 10:43
Награды: 1
Версия LabVIEW: 2009
Откуда: Россия, Владивосток
Контактная информация:

Re: Разбивание массива

Сообщение Korotenko »

из теории :rtfm: ...: группа элементов называется одинаковой, если у всех элементов группы имеется некоторый общий признак
в данном случае - шаблоны 55, 66 или 99 :D

если ещё не решил проблему - возможно :think: помогу
I work in LabVIEW 2009 !
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Разбивание массива

Сообщение Eugen Graf »

Пока не решил. Хочу выспаться и подойти к этой проблеме с новыми силами.
Аватара пользователя
Korotenko

Activity
developer
developer
Сообщения: 286
Зарегистрирован: 25 июл 2008, 10:43
Награды: 1
Версия LabVIEW: 2009
Откуда: Россия, Владивосток
Контактная информация:

Re: Разбивание массива

Сообщение Korotenko »

ты хотел лечь спать ещё 4 часа назад :D :D :D
I work in LabVIEW 2009 !
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Разбивание массива

Сообщение Eugen Graf »

Ну вот, решил, но всё оказалось не так просто и даже можно запутаться что к чему. Я сделал в общем три прибора. Стартовать "Sort.vi"
Вложения
Sort.zip
LV 8.0
(39.65 КБ) 181 скачивание
Аватара пользователя
Korotenko

Activity
developer
developer
Сообщения: 286
Зарегистрирован: 25 июл 2008, 10:43
Награды: 1
Версия LabVIEW: 2009
Откуда: Россия, Владивосток
Контактная информация:

Re: Разбивание массива

Сообщение Korotenko »

для VRUs_Sort.vi и VRUs_SortByCanId.vi необходим CanFrameTimed.ctl, поэтому не запускается

В VRUs_SortBySensId.vi забей данные по умолчанию, тогда что-нить скажу, а то не очень понятно :think:
I work in LabVIEW 2009 !
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: Разбивание массива

Сообщение Konstantin Sumenko »

Хм, возможно не совсем точно понял суть вопроса, но если одинаковые числа идут последовательно и их сколько угодно, то берем первое число, транспонируем массив и используем Search Array, таким образом знаем начальный и конечный индекс набора одинаковых елементов- вырезаем их и т.д. до победного конца.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Разбивание массива

Сообщение Eugen Graf »

Обьясни пожалуйста поподробнее, может быть с примером.

А я, дизконектил контрол, теперь я думаю можно стартовать.
Вложения
Sortieren.zip
LV 8.0
(39.33 КБ) 185 скачиваний
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: Разбивание массива

Сообщение Konstantin Sumenko »

Допустим есть массив (a0..an b0...bm c0...ck), должно получиться (a0...an) (b0...bm) (c0...ck), так?

В таком случае, берем элемент a0, транспонируем исходный массив, применяем к нему Search Array по элементу a0- получаем индекс первого вхождения a0 в транспонированном массиве (номер x), тогда в исходном массиве это номер n+m+k+3-x, далее применяем Delete from array с 0 индекса, длиной n+m+k+3-x+1, далее рекурсивно.

Можно в цикле идти по заданному элементу и последовательно удалять из массива эквивалентные заданному элементы, потом брать следующий и повторять процедуру.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Общие»