Стрвнности с "распространением" информации в массиве, наверно несовершенный алгоритм |
Стрвнности с "распространением" информации в массиве, наверно несовершенный алгоритм |
TriuS-Strannik |
12.08.2009 7:19
Сообщение
#1
|
Левша-Самоучка Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
Я тут впервые... так что сильно не ругайте, если не в ту тему залез...
Пишу пошаговую статегию., и возникла одна проблема уже вторую неделю долблю... Созданно два двумерных массива для хранения информации; я обхожу каждую ячейку, и если она занята, то выполняю для неё некий "скрипт" а результаты записываю во второй массив, и вывожу на экран; потом одновляю первый массив... а проблема такая текущая ячейка на окружением упрвляет нормально, а вот в зависимости от окружения управляется только по направлению обхода массива... В примере должен получиться симметричный крести, но данные о длинне линии на второй ячейке теряются... Помогите, уже терпение испоряеся... Зарание спасибо! Прикрепленные файлы mir.zip ( 104.69 килобайт ) Кол-во скачиваний: 195 -------------------- Молодой старик...
|
TriuS-Strannik |
12.08.2009 22:13
Сообщение
#2
|
Левша-Самоучка Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
Я тут еще немного поработал - максимально упростил прогу... может понятнее будет...
Fizika.rar ( 1.05 килобайт ) Кол-во скачиваний: 424 Глюк остался... -------------------- Молодой старик...
|
volvo |
13.08.2009 11:39
Сообщение
#3
|
Гость |
Цитата может понятнее будет... Не будет. В частности, почему у тебя в процедуре Translate для одних вариантов меняются все Pered[X, 1], а для других - только устанавливается значение Pered[1, 0] := 40 (кстати, цвет №40 - это что, по-твоему?). Что именно за преобразования ты пытаешься произвести в Translate, объясняй подробнее. Что-то у тебя там не то. |
TriuS-Strannik |
13.08.2009 12:21
Сообщение
#4
|
Левша-Самоучка Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
Когда обращение к Pered[X, 1] - это задание типа поля для обработки на следующем проходе, я называю это типом организма; Pered[1, 0] := 40 - это яркий красный цвет текущей клетки, я спользую FPC...
А преобразования такие: текущая клетка выполняет те или иные действия в зависимости от значения поля Pered[1, 1], в своём поле она устанавливает собственный цвет Pered[1, 0] или значение счётчика Pered[1, 2], а когда обращение к Pered[X, 1], где Х = 1..6 - это установка типа соседней клетки... Это своего рода программа по развертки нейросети, но пока олько развертки... Добавлено через 4 мин. Извеняюсь одна опечатка Цитата где Х = 1..6 - это установка надо Х=1..5... -------------------- Молодой старик...
|
TriuS-Strannik |
13.08.2009 13:05
Сообщение
#5
|
Левша-Самоучка Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
Опять упс...
Свой тип клетка менять не может, поэтому Х=2..5... -------------------- Молодой старик...
|
volvo |
13.08.2009 13:16
Сообщение
#6
|
Гость |
Ну, раз не хочешь говорить какие именно преобразования (то, что КАКИЕ-ТО - это я вижу, вот эти КАКИЕ-ТО у тебя неправильные) - ищи в них ошибку сам. Здесь тебе помочь нельзя, не зная, что ты пытаешься сделать.
Следствие: у тебя на третьем проходе по матрице при i = 147 клетка "вниз" заполняется значением "6", это прекращает работу с теми клетками, которые находятся ниже нее, потому что уже на следующем шаге все, что находится ниже - обнуляется, и потом вообще не обрабатывается. Какова причина этого? Я не знаю, тебе лучше знать, ты программируешь что-то, делиться своими задумками не хочешь, тебе и править код. Так правь... |
TriuS-Strannik |
13.08.2009 15:54
Сообщение
#7
|
Левша-Самоучка Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
Система влияя на соседние клктки должна развиваться...
Как ещё объяснить увы незнаю... После того как, клетка принимает значение 6 развитие должно остановиться - это правильно, но получает она это значение, если у вышестоящей счетчик обнуляется, а это должно случиться только через 147 циклов, ещё странность, рас её значение 6, то она должна быть красного цвета, а она чёрного... Собственно если подробно: case Pered[1,1] of Как ещё объяснить преобразования не знаю... -------------------- Молодой старик...
|
renesko1 |
13.08.2009 19:13
Сообщение
#8
|
поиск Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: 2 |
""(кстати, цвет №40 - это что, по-твоему?)""
Как я понял имеется ввиду : http://insidecpp.ru/antipatterns/magic_numbers/ TriuS-Strannik удачи. Сообщение отредактировано: renesko1 - 13.08.2009 19:16 -------------------- typedef void Śūnyatā ;
|
TriuS-Strannik |
14.08.2009 4:57
Сообщение
#9
|
Левша-Самоучка Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
renesko1 спасибо за ссылку...в принципе конкретно это я знал, просто в данном случае так действительно легче - просто я сильно упростил программу - функция Translatiya принадлежала другому объекту, и читала "скрипты" - потом я прописал их в код...
-------------------- Молодой старик...
|
TriuS-Strannik |
14.08.2009 7:48
Сообщение
#10
|
Левша-Самоучка Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
Собственно вышеуказанная функция работает правильно...
Ошибка пороисходит где-то пр передачи данных из буферной переменной Pered[] в SPole или при обновлении: PPole:=SPole... скорее всего второе, но как это проверить... Сообщение отредактировано: TriuS-Strannik - 14.08.2009 7:49 -------------------- Молодой старик...
|
TriuS-Strannik |
18.08.2009 13:43
Сообщение
#11
|
Левша-Самоучка Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: 0 |
Вот пример решения:
Pered[Eta ]:=PPole[x ,y ]; - это решение для конкрктного примера. ошибка происходила из-за заполнения обработанных ячеек необработаными из PPole... Добавлено через 10 мин. а ещё: здесь два примера ешения, которые переключаются GOST... -------------------- Молодой старик...
|
Текстовая версия | 10.11.2024 15:12 |