Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2015, 15:32   #1
finlolo
Новичок
Джуниор
 
Регистрация: 16.12.2014
Сообщений: 1
Печаль Работа с циклами и записями в Delphi

Есть вложенные циклы. Нужно, чтобы при нахождении ошибки цикл продолжался до нахождения решения, а при нахождении оптимального решения(то бишь true) заканчивался. Но возникает то, что цикл, либо вылетает совсем и ничего не дает, либо ищет еще одно оптимальное решение в главном цикле, хотя должен приступить к следующему.

Поясню: есть массив записи(слова с координатами каждой буквы на сетке). Берутся два слова, поставленное и, которое нужно поставить. При нахождении буквы, для пересечения, вычисляются координаты, потом идет проверка на постановку, если проверка прошла, то постановка осуществляется, иначе: ищем следующее решение, если такого нет, то отбрасываем слово.

Проблемы: если слово найдено, и не ставить выходы из цикла, то он ищет способ, как еще раз поставить слово; если возникают ошибки, но решение все-таки есть, и слово поставить можно, то он его откидывает в сторону.

.-.

Вот код.

Код:
procedure postanovka(y:integer);
var
  i,k:integer; // переменные-счетчики
  s,sp:string;//переменные для записи слов постановки
  h,w:integer;//переменные координат
begin
  s:=ms[u];// слово, которое нужно поставить
  sp:=ms[y];// слово, которое уже поставлено
  for i := 1 to length(sp) do
     begin
       for k:=1 to length(s) do
       begin
           if s[k]=words[y].word[i].letter then
           begin
              w:=words[y].word[i].OX;//присваиваем координату Х найденной буквы
              h:=words[y].word[i].OY;//присваиваем координату У найденной буквы
                 if words[y].Gor then
                 begin
                    if vproverka(h,w) then
                    if pvp(h-(k-1),w) then
                    vpostan(h-(k-1),w)
                    else
                       fl:=false
                 end
                 else
                 begin
                    if gproverka(h,w) then
                    if pgp(h,w-(k-1)) then
                    gpostan(h,w-(k-1))
                    else
                       fl:=false
                 end;
           end;
       end;
     end;
end;
finlolo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с циклами в Delphi 7. Выйти из цикла достигнув указанного условия. CONDOR* Помощь студентам 1 16.05.2012 18:59
работа с циклами Triksi Помощь студентам 3 26.06.2011 10:53
работа с циклами серг Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 22.04.2010 21:34
Работа с циклами DOJ Общие вопросы C/C++ 3 27.08.2009 18:39
работа в delphi с записями подскажите пример, пжалуйста бедный_студент Помощь студентам 4 25.03.2009 17:28