PDA

Просмотр полной версии : Нужна помощь



СергейНовосиб
04.03.2021, 12:19
Не могу придумать, как реализовать следующий алгоритм:
- 4 входа, на каждый вход приходит число. каждый вход имеет два состояния "0 или "число"".
- 4 выхода на которые транслируются числа в соответствии с приведенной картинкой.
Может кто-то уже делал подобное?

53751

Alexey_Palich
04.03.2021, 12:39
Числа на входа приходят одновременно? То есть надо сравнивать комбинацию на входе всех чисел сразу и выдавать на выход все числа сразу?

СергейНовосиб
04.03.2021, 15:32
Да, это так. В данном примере на входе числа 1, 2, 3, 4. 0 - на входе запрет трансляции этого входа на выход данного числа, со смещением оставшихся чисел вверх по приведенной таблице. Пустые выхода заполняются нулями.

Сергей0308
04.03.2021, 15:53
Ничего не понял, у вас идёт трансляция входа на выход или соответствие значения на выходе от значения на входе, короче, коммутатор или простая логическая функция, соответствие, можно понятно объяснить или хотя бы пример приложить, если красноречие не ваш конёк!

capzap
04.03.2021, 16:04
я выкладывал макрос сортировки (https://owen.ru/forum/showthread.php?t=7023&p=194793&viewfull=1#post194793). Единственное что нужно это входа сравнивать на ноль и если не ноль то к первому входу прибавить 400, ко второму 300, к третьему 200, к четвертому 100, в случае нуля на вход сортировки подавать ноль, в итоге после сортировки нули окажутся в конце, а числа не равные нулю так поделить по модулю на 10 и получиться то что Вы хотели

СергейНовосиб
04.03.2021, 16:54
Спасибо! Но это не совсем то. Если на входах последовательность чисел 3-4-1-2, то и на выходах должно быть 3-4-1-2, а если 3-0-1-2, то на выходе должно 3-1-2-0, а не 1-2-3-0.

capzap
04.03.2021, 16:59
Вы видимо не осознали зачем я описывал манипуляции перед самой сортировкой и после, жаль.

53753

СергейНовосиб
04.03.2021, 18:05
Извиняюсь за свою невнимательность. Правда получилось, в начале нули, потом числа, но это не проблема.
Огромное спасибо.

Сергей0308
04.03.2021, 21:59
Мой вариант:

53764

53765

Кстати, с любыми цифрами(значениями) на входах будет работать, в пределах диапазона типа данных!

capzap
04.03.2021, 22:49
Мой вариант:

53764

53765

Кстати, с любыми цифрами(значениями) на входах будет работать, в пределах диапазона типа данных!

у меня не установлена 19-ая, поэтому накидал как смог и что то есть сомнения что Вы проверили дальше одного варианта 53766

Сергей0308
04.03.2021, 23:18
Да согласен, есть недостатки, мне бы точно знать, что автор хочет?
Пока, я так понимаю, выхода выстраиваются в порядке(сверху вниз) активных(значение на входе больше нуля) входов, неактивные(значение равно нулю) входа пропускаются и на выход не подаются(можно сказать смещаются в самый низ), если я правильно понял, то поправлю!

Короче, что хотел сказать: ваша сортировка будет выполнять эту функцию, но можно сделать проще, неактивные входа просто отбрасывать, а не смещать вниз соответствующие им выхода, как при сортировке, так как сортировка в данном случае не требуется!

53767

53768

СергейНовосиб
05.03.2021, 07:31
Спасибо за данный вариант, но мне показалось как-то замудренный. У capzap проще в масштабировании количества входов-выходов. В будущем возможно увеличение до 10.

Сергей0308
05.03.2021, 08:33
Спасибо за данный вариант, но мне показалось как-то замудренный. У capzap проще в масштабировании количества входов-выходов. В будущем возможно увеличение до 10.

В моём варианте при масштабировании до 32 входов-выходов проблем не возникнет и имеется возможность отдельно для каждого выхода, когда он не используется, назначать любое(не нулевое) значение.
У каждого варианта могут быть свои плюсы и минусы. Каждый выбирает то, что ему важнее в плане плюсов и минусов. Я Вас могу понять, когда нет выбора проще и голова не болит что выбрать!

Может так будет казаться проще:

53774

53775

И, если я правильно угадал вашу задачу, то алгоритм, предназначен(заточен) специально под вашу задачу!
Сортировка капзапа решает и вашу задачу, но изначально создавалась для другой, относительно более сложной задачи!
У меня легко(с минимальными усилиями) можно при необходимости входам(каждому в отдельности) назначить любое значение(диапазон) соответствующее неактивному(активному) состоянию входа!

Короче, можно и в сите воду таскать, но когда Вам предлагают ведро, странно слышать что у ведра какая-то мудрёная форма!

Вот немного подрихтовал, чисто косметические изменения(можно и не заметить), но мне так кажется красивее!

53852

53853