1 | ||||||
Единождое выполнение оператора в теле цикла, или виртуальный конвейер16.07.2022, 23:14. Показов 5254. Ответов 61
Метки нет (Все метки)
Такое возможно?
Тело цикла. Допустим что это тут, для примера. На самом деле единожде выполнение требуется в другом цикле - в внешнем, но пусть как-бы тут
TtracerRec.bool:=false; за пределами цикла выполнится TtracerRec.bool:=true; . Просто ставить проверки условия - не совсем разумно, проще иметь виртуальный конвейер, что-то типа того...
0
|
16.07.2022, 23:14 | |
Ответы с готовыми решениями:
61
Можно ли в теле оператора цикла использовать условный оператор? Если да, назовите примеры таких программ Использование оператора поиска seek в теле цикла Использование условного оператора в теле операторов цикла с условием Использование условного оператора в теле операторов цикла с условием |
Заблокирован
|
||||||
16.07.2022, 23:18 | 2 | |||||
0
|
17.07.2022, 00:42 [ТС] | 5 |
Если это не нужно сейчас, то это может быть нужно потом.
И это проблема. Так как очевидно что удалив после выполнения код - получаем выигрыш. Вопрос как это может быть реализуемо - то ли на ассемблере одним переходом. Но переход на ассемблере - тоже операция, и будет выполняться каждый раз на итерации цикла последующей...в общем проблема.
0
|
17.07.2022, 01:24 [ТС] | 7 |
Данный закон отменяется параллельным конвеером, который просто остановится после однократного выполнения.
Просто использовать массив процедур не целесообразно наверное. Можно так-же обойтись прыжком в ассемблере, где выполнение ассемблерного кода изменит точку следующих прыжков. В общем тут физикой и не пахнет. Вы ошиблись разделом, а возможно и вообще физикой.
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
|
|
17.07.2022, 01:28 | 8 |
А этот "виртуальный конвейер" всё сделает без всякой проверки? Типа "по волшебству"?
0
|
17.07.2022, 01:44 [ТС] | 10 | ||||||||||
правка
Добавлено через 4 минуты не имею привычки судить других - пусть они сами с собой разберутся, правильнее заниматься своим делом Минимум что можно предпринять Код
начало цикла ....прочие операторы прыжок в точку 1------------------------------ точка 1 выполнение одноразового оператора изменение адреса прыжка на точку 2 и переход в точку 2 точка 2 конец цикла Добавлено через 8 минут Типа вот так основной цикл
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
|
|
17.07.2022, 02:36 | 11 |
Изменение адреса прыжка не возможно даже с помощью "волшебного" ассемблера.
Добавлено через 2 минуты Это что-то бредовое, имхо. Или опять мечта о волшебной палочке.
0
|
17.07.2022, 09:07 [ТС] | 12 |
ну раз изменение адреса прыжка невозможно, то значит не бредовое, так как остаётся единственной возможной альтернативой.
Добавлено через 12 минут Или прыжок весит столько-же сколько и проверка значения на ноль? Если вес одинаковый - то конечно нечего выдумывать, так как любая альтернатива прыжку едва-ли станет легче. Но тут нужен ответ эксперта. Домыслам грош цена.
0
|
600 / 548 / 210
Регистрация: 24.01.2012
Сообщений: 1,349
|
||||||
17.07.2022, 23:35 | 13 | |||||
Сообщение было отмечено Hretgir как решение
Решение
как вариант
1
|
Модератор
3635 / 2153 / 762
Регистрация: 15.11.2015
Сообщений: 8,640
|
|
18.07.2022, 12:49 | 15 |
Сообщение было отмечено Hretgir как решение
Решение
Если что-то нужно выполнить 1 раз, я бы вынес эту команду перед циклом, включая повтор команд, которые должны выполниться перед выполнением этой одной команды и тогда в теле цикла не нужно ничего придумывать и не нужно никуда прыгать.
Добавлено через 38 секунд То есть, продублировать тело цикла вместе с нужной командой, а уже в цикле писать без этой командой. Добавлено через 1 минуту Хотя, если идёт обращение к StringGrid, как в примере, то тут уже одна проверка условия совершенно не замедлит программу. Замедление будет меньше погрешности измерения.
1
|
19.07.2022, 00:14 [ТС] | 16 | |||||
Да, должно вынестись за предел. Возможно так и было, просто алгоритм до последних изменений подвергся сильным до малой узнаваемости, а отладку я вёл без планирования поэтапного, чего больше никогда не сделаю для вещей такой сложности.
Тут понятно, что с сложными вещами запросто не получается, нужно делать поэтапно и иметь план действий. В этот раз получилось, но в следующий раз планирую. Да, всё получилось с выносом за пределы цикла, по крайней мере для ввода единицы в TEdit1, но выглядит поправленное намного сложнее, чем хотелось-бы: приходится откатывать назад две переменные. И видимо надо сосредоточиться и поменьше отвлекаться. Добавлено через 16 минут Вот такое получилось в конце вложений циклов
Работы ещё много. Добавлено через 36 минут Хотя лучше вынести за цикл первую запись, чем последнюю, видимо то когда-то планировалось. Всё таки тайм Прайма не хватает.
0
|
19.07.2022, 23:55 [ТС] | 17 |
Кто хочет попробовать вынести это за пределы цикла - может попробовать сам, я обойдусь прыжком в ассемблерной вставке.
Проблема в том, что при выносе в строки после цикла - приходится откатывать значения переменных если катангенс близок к нулю, если катангенс близится к катангенсу угла 45 градусов - скорее всего это будет по частоте делаться чаще. Если-же я вынесу в строки перед циклом - то не получится диагональных линий типа: vertex: 1,1;2,2, а будет так vertex: 1,1;1,2;2,2, а это совсем не надо. В общем это целая история - если кто-то хочет ломать голову - может заняться, я объясню что должен делать алгоритм и какую механику он осуществляет. Сам-же я на данном этапе обойдусь прыжком в ассемблерной вставке. К тому-же это просто генератор карт трассировок, над ним я работал чтобы не писать карт вручную - по образу и подобию дебила(думаю что дебил не только-бы писал карты сам, но потом ещё и штат картографов нанял, цель... - обманывать в зарплате подчинённых и руководство в декларации о доходах), изменять размер обрабатываемых изображений, дать функционал. К самому способу замены свёрточных нейросетей это не имеет прямого отношения, а только через карты, которые будут применять нейросети, а писать генератор, да и то в исключительных случаях.
0
|
20.07.2022, 23:03 [ТС] | 18 | ||||||||||
Чёт раздел затих . Сначала прочти то, что за спойлером.
Кликните здесь для просмотра всего текста
В общем это мой прайм тайм 22-0, бывает меньше.
И я не программист, если что. Изображения надо готовить, поэтому я сначала опишу суть "на пальцах". Алгоритм записывает карты трассировок, таблицу я вырвал из проекта и открыл новый, так как генератор карт оказался не прост. Чтобы понять суть - надо смотреть вот от этой части, хоть там и так всё не доделано.Комментарии можете не читать - я их делал для себя, а выходной не могу посвятить кому-то, потому как надо заготовить обеды на работу.
BasiY - базовый координат Y, который увеличивается после каждой пробежки длинной линии, так как при прорисовке коротких фрагментов (линий) длинных линий, ранее уже говорилось происходит смещение в меньшую сторону. Ряд проверки условий: на указатели - пока можно вообще не обращать внимания, на случай когда линия уходит вниз в несуществующую часть изображения, на случай когда линия приходит сверху - с несуществующей часть изображения. Поле болеан в карте трассировки должно содержать единицу, когда происходит обрыв линии в рамках размеров текущего изображения. Для чего нужны карты - сам алгоритм замены свёрточных нейросетей не должен вести расчёты сложнее простого сложения типа x+1, длина линий потом запишется как их вес. Изображение при обработке размножится на число карт. Так можно будет определять вершины и углы. Причём по предварительным прикидкам минимальный угол будет соответствовать максимальному весу на параллельных картах - картах углов. Но это так, в недалёком надеюсь будущем. По причинам описанным вчера, и исходя из оценки тайм прайма я в общем останавливаюсь на варианте с прыжком. Очень грубо, с кучей ошибок и недоработок выкладываю отладочную процедуру. Предупреждаю - если вы не в силах самостоятельно написать свой парсер математических выражений и формул - то и за это лучше не беритесь, так как при таких задачах мозги могут реально "закипеть" и, кроме нервного тика, вы ничего не получите в качестве результата. Тика у меня не случалось, но ощущение стремительного поседения приходило, когда 3-5 дней искал ошибку в когда-то написанном парсере, причём тогда ошибку я искал с утра до полуночи - такой был у меня тогда тайм прайм. Нашёл ошибку, но ощущение того что вот-вот шизанусь - заставляло не забывать о себе. А так - если есть опыт и время, можете конечно попробовать без ассемблерной вставки. Я не стану говорить что это невозможно, но мой тайм прайм сейчас мне это не позволит, да и генератор карт трассировок - не масштаб математического парсера. Он нужен-то так себе...один раз на много много раз не нужен. Для мниста я мог и вручную написать карты, но не хочется идти путём умного пирата из острова сокровищ. Такова моя видимо натура - убиваться о дебри какие-то. Тут я ничего не могу с собой поделать, понимаю что это трудно, и в обществе никаких бонусов не даёт, но мне по другому не интересно. Алгоритм пока работает полуисправно
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
|
|
21.07.2022, 02:35 | 19 |
И не удивительно. Вы решаете какую-то свою задачу, но какую точно, никому кроме вас не известно.
На отдельные конкретные ваши вопросы ответы были даны.
0
|
Модератор
|
|||||||
21.07.2022, 04:58 | 20 | ||||||
1
|
21.07.2022, 04:58 | |
21.07.2022, 04:58 | |
Помогаю со студенческими работами здесь
20
Задача на цикл, ошибка в теле цикла Может ли завершиться выполнение оператора цикла? Выполните, пожалуйста, задание, при этом вместо оператора цикла while используйте оператора цикла do_while Как проверять, нажата ли клавиша Esc, в каждой итерации цикла, и если нажата, то прервать выполнение цикла? Составить блок-схему, программу на языке С++. В качестве оператора цикла использовать цикл с постусловием С любого из операторов цикла вычислить y. Оператор if в теле цикла не использовать C++ с использованием оператора цикла с предусловием и оператора цикла с постусловием Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |