Сообщение от
Cs-Cs
Мне стало интересно. Подпишусь на тему.
Мои тезисы:
1. Написано что надо запоминать позицию брака для удаления его экстрактором.
Что происходит после удаления брака с запомненной позицией?
2. Вроде динамические массивы фиг создашь. Можно сделать статический на максимум элементов.
Почему вообще придуман динамический массив со сдвигом?
3. ИМХО (тут я могу тупить) тут же алгоритм простой: когда выявлен брак, то подождать 15 импульсов - и пнуть экстрактор.
Раз расстояние от камеры до экстракторка - 15 импульсов - то получается что максимум что может быть - это 15 раз подряд брака. Значит максимальная длина массива - это 15 элементов.
И получается, что нужен массив (очередь) FIFO. И работать должно так (ИМХО):
* С каждым импульсом от датчика сдвигаем массив на один шаг влево (на место первого - второй, на место второго - третий и так далее). После сдвига последний элемент дожен оказаться пустым.
* Если видим в массиве ссылку на брак - удаляем его экстрактором и обнуляем этот элемент массива
* Если камера видит брак - то она выставляет флаг брака в последнем элементе массива.
То есть, образно, насколько я придумал - то массив элементов должен двигаться вместе с конвеером по датчику импульсов.
И если на массиве "приехал" брак - то его и скидываем экстрактором.
Ну и не забываем про все правила работы с массивами:
* Границы минимума и максимума делаем через константы, чтобы избежать магических чисел
* Проверяем границы и условия работы циклов, чтобы не выйти за границы массива