Страница 1 из 1

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

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

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

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

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

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

Добавлено: 21 апр 2018, 23:11
zxc_pavel
У Вас версия 8.6 написана, а виайка 15ая
Может я и не все условия понял (скорее всего), но дальше Вы справитесь сами

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

Добавлено: 21 апр 2018, 23:14
Nikol
Я например вообще не понял, что нужно сделать
В данном случае массив это имитация входного сигнала который изменяется с течением времени, каждое изменение данного сигнала(или следующая строка массива) должно проверятся с фиксированным максимумом(число N), в случае если входной сигнал меньше числа N(в программе я перепутал равенство,прошу прощения), необходимо подать сигнал свидетельствующий о данном событии путем инкремента, при этом необходимо удостовериться что следующий входной сигнал(следующая строка массива не меньше предыдущей и при этом больше числа N). Надеюсь смог объяснить.
Вы алгоритм на листочке нарисуйте...
Алгоритм то есть, но вот опыта а самое главное знаний работы всех инструментов VI мало( И как организовать сравнение элементов всего массива с конкретным числом или элементами другого массива не могу даже представить. В интернете есть лишь варианты сравнения конкретной строки/столбца массива с строкой/столбцом другого массива

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

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

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

Добавлено: 21 апр 2018, 23:58
IvanLis
Nikol писал(а):Алгоритм то есть, но вот опыта а самое главное знаний работы всех инструментов VI мало( И как организовать сравнение элементов всего массива с конкретным числом или элементами другого массива не могу даже представить. В интернете есть лишь варианты сравнения конкретной строки/столбца массива с строкой/столбцом другого массива
Вас 2 условия, а значит возможны 2^2 исхода сравнения, это при условии использования знака равно.
У Вас не все варианты действий сейчас предусмотрены после сравнения.

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

Добавлено: 22 апр 2018, 10:50
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 организовать декремент получившегося

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

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

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

Добавлено: 22 апр 2018, 15:23
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.

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

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

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

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

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

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

Добавлено: 24 апр 2018, 00:05
Blackman
А так не проще)