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

Простейшие вопросы в области инженерной разработки

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

Postby Nikol on 21 Apr 2018, 17:25

Здравствуйте, подскажите(помогите разобраться) как сделать бесконечный цикл сравнения всех строк массива с конкретным числом?
Cуть задачи проверить все элементы массива, в случае если элемент больше числа N организовать инкремент числа 0 при этом нужно проверить(у меня в программе данной проверки нет так не сообразил даже как ее реализовать :shok: ) чтобы следующий число в массиве было больше числа N и предыдущего числа, если следующее число меньше предыдущего и больше N организовать декремент получившегося числа , иначе осуществить инкремент получившегося числа. :suicide:
Спасите! :help: :help: :help: Буду признателен за любую помощь.
Attachments
М.png
М.png (11.66 KiB) Viewed 458 times
Массивы.rar
(6.13 KiB) Downloaded 10 times
Nikol
beginner
beginner
 
Posts: 42
Joined: 02 Nov 2016, 16:40
LabVIEW Version: 15
Karma: 0

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

Postby IvanLis on 21 Apr 2018, 17:35

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


Вы алгоритм на листочке нарисуйте...
Много вопросов снимутся сами собой.

--
Я например вообще не понял, что нужно сделать
User avatar
IvanLis
professor
professor
 
Posts: 4543
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 715
hardware VIP bloggers teachers

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

Postby zxc_pavel on 21 Apr 2018, 23:11

У Вас версия 8.6 написана, а виайка 15ая
Может я и не все условия понял (скорее всего), но дальше Вы справитесь сами
Attachments
Untitled 14.vi
(10.39 KiB) Downloaded 13 times
zxc_pavel
user
user
 
Posts: 88
Joined: 02 Jun 2016, 12:07
LabVIEW Version: 14
Karma: 73

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

Postby Nikol on 21 Apr 2018, 23:14

Я например вообще не понял, что нужно сделать

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

Алгоритм то есть, но вот опыта а самое главное знаний работы всех инструментов VI мало( И как организовать сравнение элементов всего массива с конкретным числом или элементами другого массива не могу даже представить. В интернете есть лишь варианты сравнения конкретной строки/столбца массива с строкой/столбцом другого массива
Nikol
beginner
beginner
 
Posts: 42
Joined: 02 Nov 2016, 16:40
LabVIEW Version: 15
Karma: 0

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

Postby Nikol on 21 Apr 2018, 23:32

Может я и не все условия понял (скорее всего), но дальше Вы справитесь сами

Спасибо за помощь! Единственный вопрос в программе, а для чего второй оператор AND? да еще и с инверсным входом, если с первым вроде все понятно(служит для выдачи логического сигнала при одновременном выполнении условий, следующее значение больше N но меньше предыдущего) то какую функцию выполняет второй не пойму.
Nikol
beginner
beginner
 
Posts: 42
Joined: 02 Nov 2016, 16:40
LabVIEW Version: 15
Karma: 0

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

Postby IvanLis on 21 Apr 2018, 23:58

Nikol wrote:Алгоритм то есть, но вот опыта а самое главное знаний работы всех инструментов VI мало( И как организовать сравнение элементов всего массива с конкретным числом или элементами другого массива не могу даже представить. В интернете есть лишь варианты сравнения конкретной строки/столбца массива с строкой/столбцом другого массива

Вас 2 условия, а значит возможны 2^2 исхода сравнения, это при условии использования знака равно.
У Вас не все варианты действий сейчас предусмотрены после сравнения.
User avatar
IvanLis
professor
professor
 
Posts: 4543
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 715
hardware VIP bloggers teachers

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

Postby zxc_pavel on 22 Apr 2018, 10:50

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

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

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

3) если a[i+1]<a[i] и a[i+1]>N // если следующее число меньше предыдущего и больше N организовать декремент получившегося
zxc_pavel
user
user
 
Posts: 88
Joined: 02 Jun 2016, 12:07
LabVIEW Version: 14
Karma: 73

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

Postby Nikol on 22 Apr 2018, 12:36

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

Те нужно организовать цикл внутри которого будут циклы проверки Case в котором в свою очередь будут и другие Case c последующими условиями. Отсюда вопрос в каком порядке будет осуществляться проверка? А именно с первого Case(в котором будут последующие и соответственно поэтапно проверять каждое условие) или же проверка начнется с самого последнего условия??
Nikol
beginner
beginner
 
Posts: 42
Joined: 02 Nov 2016, 16:40
LabVIEW Version: 15
Karma: 0

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

Postby IvanLis on 22 Apr 2018, 15:23

Nikol wrote:Те нужно организовать цикл внутри которого будут циклы проверки 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 KiB) Downloaded 12 times

Но учтите, что при проверке N>M -> True, False будет при N<=M.
User avatar
IvanLis
professor
professor
 
Posts: 4543
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 715
hardware VIP bloggers teachers

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

Postby zxc_pavel on 22 Apr 2018, 15:28

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

Вообще мне не нравятся эти структруры. Много места занимают. Если вложенностей > 2, то разрастается все и некрасивый код получается.
Можно каждое условия отдельно непротиворечиво написать - создать массив - его в число (или искать true) - и кейс получается один. Иногда нагляднее.
Attachments
уцй.png
zxc_pavel
user
user
 
Posts: 88
Joined: 02 Jun 2016, 12:07
LabVIEW Version: 14
Karma: 73

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

Postby IvanLis on 23 Apr 2018, 08:33

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

Не уверен, что получится быстрее...
Но тут как говорится "кровью написано", что озвученная мною конструкция более гибкая и универсальная, особенно при вложенности более 2.
Помимо наглядности, позволяет избежать множественного дублирования кода (если реакция одинакова на несколько условий), и т.д. и т.п.
2.png
User avatar
IvanLis
professor
professor
 
Posts: 4543
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 715
hardware VIP bloggers teachers

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

Postby Blackman on 24 Apr 2018, 00:05

А так не проще)
Attachments
In Range Counter.png
Blackman
leader
leader
 
Posts: 706
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 185


Return to Для чайников

Who is online

Users browsing this forum: Yandex and 9 guests

cron