Эту статью я уже нагугливал =( Volvo, если не труднол мог бы ты коменты поставить там где пример на паскале и выложить сюда?
XaMMaX
20.11.2006 19:29
Единственное что мне пришло в голову это: Каждый раз пробегать весь мосив , допустим ищю 1 пробегаю массив и каждому найденому 1 применяю процедуру(для обозначения 2) потом так же с два и т.д. но ресурсов я чувствую это сожрёт не меренно =) Volvo, HELP!!!
Попробуй совместить программу с Алголиста с этими комментариями...
Michael_Rybak
20.11.2006 20:08
Цитата
Каждый раз пробегать весь мосив , допустим ищю 1 пробегаю массив и каждому найденому 1 применяю процедуру
Молодец. Это правильно, и это будет работать, но, действительно, медленно. Вместо того, чтобы каждый раз бегать по всему массиву, лучше заведи еще другой, линейный массив записей (x, y), в который пихай все вершины, в которые что-пишешь. И просто иди по нему слева направо. Вроде такого:
type TCoord = record x, y: integer end; var pp: array[1 .. 100] of TCoord; np: integer; //количество пройденных клеток mark: array[1 .. 10, 1.. 10] of integer;
procedure Wave(i0, j0: integer); var i, j, cp: integer; p, p1: TCoord; begin //все поле заполняем минус единицами for i := 1 to 10 do for j := 1 to 10 do mark[i, j] := 1;
if a[i0, j0] = 0 then exit; //клацнули по пустой клетке
from i=1 to 9 step 1 from j=1 to 9 step 1 write(0,i*20,j*20,0,mark[i][j]); frame; end end frame; end
Michael_Rybak
20.11.2006 22:58
Ты забыл увеличить номер обрабатываемой клетки (cp := cp + 1;)
XaMMaX
20.11.2006 23:14
Так опменял но чёто странные результаты(такое чувство что выполняется обработка только раз =() Может в фениксе while по другому юзается =( Тогда под repeat перестрою! Так как мне тогда условия поставить(да наверное глупый вопрос, но ника не доходит)? И вот что за фигня выходит(на скрине)
Хотя думаю дело не в фениксе где то ошибка в коде while правильно работает =(
XaMMaX
20.11.2006 23:33
Ничё не пойму повторяется вроде правильно =\ Плиз помогите, а то буду чувствую неделю сидеть и всё равно не надуматьв чём ошибка =(
Michael_Rybak
21.11.2006 1:50
Не ну как это называется. У тебя есть полное описание, есть мой псевдокод, а ты даешь мне код на фениксе, который я в жизни не видел, и спрашиваешь, что не работает. Ты умеешь пользоваться средствами отладки? Если их в фениксе нет, повставляй кучу write'ов, и определи, сколько раз выполняется цикл, в какой последовательности обрабатываются клетки и т.д.
С опытом у тебя это будет получаться все лучше, но только если начнешь пробовать.
Гость
21.11.2006 2:48
Ну да ты прав =) Попробую в паскале сделать сначала =) Ну завтра на свежую голову лучше ждите завтра думаю пару вопросов ещё будет (хотя надеюсь вопросов больше не будет и справлюсь сам, но к сожалению это мой первый лайнс и даётся мне кое как) ^_^
Michael_Rybak
21.11.2006 2:54
Нормально дается, стараешься, и выходит. В начале так и должно быть. Давай, приходи, будем смотреть. И паскалевский код я хоть подебажить смогу
XaMMaX
23.11.2006 1:53
Алилую даже на паскаль переписывать не пришлось =) Половина алгоритма сделана! Осталось теперь находить сам путь вот сдесь у меня появилась проблемма =(Michael_Rybak, как ты это делаеш? Я начал так смотрю четыре ближние клетки нахожу наименьшую потом делаю то же с наименьшой и т.д. правильно? Я создал отдельную матрицу и путь обозначил цифрами 1 =)
Michael_Rybak
23.11.2006 2:06
Цитата(XaMMaX @ 22.11.2006 20:53)
Я начал так смотрю четыре ближние клетки нахожу наименьшую потом делаю то же с наименьшой и т.д. правильно? Я создал отдельную матрицу и путь обозначил цифрами 1 =)
Правильно. Только наименьшая всегда будет равна текущая минус один, но это можно и не учитывать
XaMMaX
23.11.2006 2:13
А я исключил это сразу =) Ну раз правильно двигаюсь дальше! Ещё приду!
Michael_Rybak
23.11.2006 2:17
Приходи
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.