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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2011, 23:00   #1
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию Задача о ходе коня

Написал программу( знаю что поступил не правильно, ведь сначала должна схема алгоритма рисоваться а затем программа)...и теперь немогу разобраться со схемой алгоритма...изобразите?
Код:
program ChessHorse;

const   Dim = 5;
        PathLen = Dim*Dim;

var     Field :Array[1..Dim,1..Dim] of integer; { h[x, y]=i => **на клетку (x,y) конь попал после i-го хода * }
        TraceXY: array[1..PathLen,1..2] of integer;
        n :integer; { текущая длина пути }
        x, y :integer;

function TryMove (i, j :integer) :Boolean;
begin
  if n>PathLen then TryMove := true { путь найден }
  else
    begin
    TryMove := false;
    if (i>=1) AND (i<=Dim) AND (j>=1) AND (j<=Dim) AND (Field[i, j]=0) then
      begin
      Field[i, j] := n;
      TraceXY[n,1]:=i; TraceXY[n,2]:=j;
      n := n+1;
      if TryMove(i+1, j+2)=true then TryMove := true
       else if TryMove(i+1, j-2)=true then TryMove := true
        else if TryMove(i-1, j+2)=true then TryMove := true
         else if TryMove(i-1, j-2)=true then TryMove := true
          else if TryMove(i+2, j+1)=true then TryMove := true
           else if TryMove(i+2, j-1)=true then TryMove := true
            else if TryMove(i-2, j+1)=true then TryMove := true
             else if TryMove(i-2, j-1)=true then TryMove := true;
      Field[i, j] := 0;
      n := n-1;
      end;
   end;
end;

Begin
  for x:=1 to Dim do
    for y:=1 to Dim do
      Field[x, y]:=0;
  WriteLn ('Шахматное поле ', Dim, 'x', Dim);
  WriteLn ('Введите координаты начального положения коня');
  Write ('X='); ReadLn (x);
  Write ('Y='); ReadLn (y);
  if (x<1) OR (x>Dim) OR (y<1) OR (y>Dim) then
    WriteLn ('Неверный ввод.')
  else
    begin
    n := 1;
    WriteLn ('Поиск путей длины ', PathLen, ' ...');
    case TryMove (x, y) of
      true: begin
            WriteLn ('Найденый путь');
            for x:=1 to PathLen do
               write(TraceXY[x,1]:3);
            writeln;
            for x:=1 to PathLen do
               write(TraceXY[x,2]:3);
               writeln;
            end;
      false: WriteLn ('Нет путей для обхода');
      end;
    end;
end.
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 22.12.2011, 23:24   #2
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Дамы и Господа.....выручайте
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 22.12.2011, 23:26   #3
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Дамы и Господа.....выручайте
Поиск по форуму FCEditor
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тур коня McFrey Помощь студентам 3 16.12.2011 22:18
Путешествие коня. KOPC1886 Помощь студентам 1 22.02.2011 21:08
Путешесвтие коня. KOPC1886 Помощь студентам 1 26.01.2011 18:36
Путь коня. xaero93 Помощь студентам 4 28.11.2010 10:03
Ошибка в ходе программы, требуется пояснение... kotzzz Мультимедиа в Delphi 2 14.04.2010 14:31