Сравнить все элементы массива с заданным числом.

Простейшие вопросы в области инженерной разработки
Ответить
Nikol
beginner
beginner
Сообщения: 42
Зарегистрирован: 02 ноя 2016, 16:40
Версия LabVIEW: 15
Контактная информация:

Сравнить все элементы массива с заданным числом.

Сообщение Nikol »

Здравствуйте, подскажите(помогите разобраться) как сделать бесконечный цикл сравнения всех строк массива с конкретным числом?
Cуть задачи проверить все элементы массива, в случае если элемент больше числа N организовать инкремент числа 0 при этом нужно проверить(у меня в программе данной проверки нет так не сообразил даже как ее реализовать :shok: ) чтобы следующий число в массиве было больше числа N и предыдущего числа, если следующее число меньше предыдущего и больше N организовать декремент получившегося числа , иначе осуществить инкремент получившегося числа. :suicide:
Спасите! :help: :help: :help: Буду признателен за любую помощь.
Вложения
М.png
М.png (11.66 КБ) 4749 просмотров
Массивы.rar
(6.13 КБ) 87 скачиваний
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5461
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

Re: Сравнить все элементы массива с заданным числом.

Сообщение IvanLis »

Nikol писал(а):Здравствуйте, подскажите(помогите разобраться) как сделать бесконечный цикл сравнения всех строк массива с конкретным числом?
Cуть задачи проверить все элементы массива, в случае если элемент больше числа N организовать инкремент числа 0 при этом нужно проверить(у меня в программе данной проверки нет так не сообразил даже как ее реализовать :shok: ) чтобы следующий число в массиве было больше числа N и предыдущего числа, если следующее число меньше предыдущего и больше N организовать декремент получившегося числа , иначе осуществить инкремент получившегося числа. :suicide:
Спасите! :help: :help: :help: Буду признателен за любую помощь.
Вы алгоритм на листочке нарисуйте...
Много вопросов снимутся сами собой.

--
Я например вообще не понял, что нужно сделать
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 242
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Re: Сравнить все элементы массива с заданным числом.

Сообщение zxc_pavel »

У Вас версия 8.6 написана, а виайка 15ая
Может я и не все условия понял (скорее всего), но дальше Вы справитесь сами
Вложения
Untitled 14.vi
(10.39 КБ) 175 скачиваний
Nikol
beginner
beginner
Сообщения: 42
Зарегистрирован: 02 ноя 2016, 16:40
Версия LabVIEW: 15
Контактная информация:

Re: Сравнить все элементы массива с заданным числом.

Сообщение Nikol »

Я например вообще не понял, что нужно сделать
В данном случае массив это имитация входного сигнала который изменяется с течением времени, каждое изменение данного сигнала(или следующая строка массива) должно проверятся с фиксированным максимумом(число N), в случае если входной сигнал меньше числа N(в программе я перепутал равенство,прошу прощения), необходимо подать сигнал свидетельствующий о данном событии путем инкремента, при этом необходимо удостовериться что следующий входной сигнал(следующая строка массива не меньше предыдущей и при этом больше числа N). Надеюсь смог объяснить.
Вы алгоритм на листочке нарисуйте...
Алгоритм то есть, но вот опыта а самое главное знаний работы всех инструментов VI мало( И как организовать сравнение элементов всего массива с конкретным числом или элементами другого массива не могу даже представить. В интернете есть лишь варианты сравнения конкретной строки/столбца массива с строкой/столбцом другого массива
Nikol
beginner
beginner
Сообщения: 42
Зарегистрирован: 02 ноя 2016, 16:40
Версия LabVIEW: 15
Контактная информация:

Re: Сравнить все элементы массива с заданным числом.

Сообщение Nikol »

Может я и не все условия понял (скорее всего), но дальше Вы справитесь сами
Спасибо за помощь! Единственный вопрос в программе, а для чего второй оператор AND? да еще и с инверсным входом, если с первым вроде все понятно(служит для выдачи логического сигнала при одновременном выполнении условий, следующее значение больше N но меньше предыдущего) то какую функцию выполняет второй не пойму.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5461
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

Re: Сравнить все элементы массива с заданным числом.

Сообщение IvanLis »

Nikol писал(а):Алгоритм то есть, но вот опыта а самое главное знаний работы всех инструментов VI мало( И как организовать сравнение элементов всего массива с конкретным числом или элементами другого массива не могу даже представить. В интернете есть лишь варианты сравнения конкретной строки/столбца массива с строкой/столбцом другого массива
Вас 2 условия, а значит возможны 2^2 исхода сравнения, это при условии использования знака равно.
У Вас не все варианты действий сейчас предусмотрены после сравнения.
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 242
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Re: Сравнить все элементы массива с заданным числом.

Сообщение zxc_pavel »

Ага, у Вас не хватает условий. По тексту Вашему, сверху вниз.

1) если a>N // в случае если элемент больше числа N организовать инкремент...

2) если a[i+1]>a и a[i+1]>N // ...проверить, что следующее число в массиве было больше числа N и предыдущего числа...

3) если a[i+1]<a и a[i+1]>N // если следующее число меньше предыдущего и больше N организовать декремент получившегося
Nikol
beginner
beginner
Сообщения: 42
Зарегистрирован: 02 ноя 2016, 16:40
Версия LabVIEW: 15
Контактная информация:

Re: Сравнить все элементы массива с заданным числом.

Сообщение Nikol »

Ага, у Вас не хватает условий. По тексту Вашему, сверху вниз.
Те нужно организовать цикл внутри которого будут циклы проверки Case в котором в свою очередь будут и другие Case c последующими условиями. Отсюда вопрос в каком порядке будет осуществляться проверка? А именно с первого Case(в котором будут последующие и соответственно поэтапно проверять каждое условие) или же проверка начнется с самого последнего условия??
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5461
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

Re: Сравнить все элементы массива с заданным числом.

Сообщение IvanLis »

Nikol писал(а):Те нужно организовать цикл внутри которого будут циклы проверки Case в котором в свою очередь будут и другие Case c последующими условиями. Отсюда вопрос в каком порядке будет осуществляться проверка? А именно с первого Case(в котором будут последующие и соответственно поэтапно проверять каждое условие) или же проверка начнется с самого последнего условия??
Не нужны циклы для проверки.
Выполняете два сравнения, результат объединяете в массив (Boolean) и преобразуете его в число.
Получается:
0 = F, F
1 = T, F
2 = F, T
3 = T, T
Потом в Case по числу уже принимаете решение.

Должно быть как-то так:
1.png
Untitled 1.vi
lv2010
(9.16 КБ) 98 скачиваний
Но учтите, что при проверке N>M -> True, False будет при N<=M.
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 242
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Re: Сравнить все элементы массива с заданным числом.

Сообщение zxc_pavel »

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

Вообще мне не нравятся эти структруры. Много места занимают. Если вложенностей > 2, то разрастается все и некрасивый код получается.
Можно каждое условия отдельно непротиворечиво написать - создать массив - его в число (или искать true) - и кейс получается один. Иногда нагляднее.
Вложения
уцй.png
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5461
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

Re: Сравнить все элементы массива с заданным числом.

Сообщение IvanLis »

zxc_pavel писал(а):Самое простое - как написано словами, в такой последовательности и проверять. С первого условия. Если важно быстродействие алгоритма, то проверки нужно пихать внутрь кейсов.
Не уверен, что получится быстрее...
Но тут как говорится "кровью написано", что озвученная мною конструкция более гибкая и универсальная, особенно при вложенности более 2.
Помимо наглядности, позволяет избежать множественного дублирования кода (если реакция одинакова на несколько условий), и т.д. и т.п.
2.png
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Сравнить все элементы массива с заданным числом.

Сообщение Blackman »

А так не проще)
Вложения
In Range Counter.png
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»