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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2010, 20:32   #1
Erafiil
 
Регистрация: 29.09.2010
Сообщений: 6
По умолчанию нахождение мин пути в двум массиве

Требуется написать программу, которая выводит на экран минимальный путь в двумерном массиве (состоящий из 0 и 1, 1-стена, проход через нее запрещен) движение начинается с крайнего левого угла до крайнего правого. заранее благодарен=)
Erafiil вне форума Ответить с цитированием
Старый 26.12.2010, 11:29   #2
Ponkole
Форумчанин
 
Регистрация: 02.07.2010
Сообщений: 167
По умолчанию

вот пока держи курсовая работа + чудесная программа на делфе

а если че вот в паскале


Код:
Program Voln;

Uses Crt;
var
   XS, YS, XE, YE : Byte;
   X, Y, I : Byte;
   MapM : array [1..10, 1..10] of Byte;
   Moves : Byte;
   MovesX : array [1..100] of Byte;
   MovesY : array [1..100] of Byte;
Procedure Next(Var X, Y : Byte);
Begin
     If (X <10) and (MapM[X, Y] - MapM[X + 1, Y] = 1) then
        Begin
             X := X + 1;
             Exit;
        End;
     If (X >1) and (MapM[X, Y] - MapM[X - 1, Y] = 1) then
        Begin
             X := X - 1;
             Exit;
        End;
     If (Y <10) and (MapM[X, Y] - MapM[X, Y + 1] = 1) then
        Begin
             Y := Y + 1;
             Exit;
        End;
     If (Y >1) and (MapM[X, Y] - MapM[X, Y - 1] = 1) then
        Begin
             Y := Y - 1;
             Exit;
        End;
End;
Begin
     ClrScr;
     For Y := 1 to 10 do
         Begin
              For X := 1 to 10 do read(MapM[X, Y]);
              WriteLn;
         End;
     WriteLn('Please enter X and Y of the start: ');
     ReadLn(XS, YS);
     WriteLn('Please enter X and Y of the end: ');
     ReadLn(XE, YE);
     If (Map[XS, YS] = 1) or (Map[XE, YE] = 1) then
        Begin
             WriteLn('Error!!!');
             ReadLn;
             Halt;
        End;
     MapM[XS, YS] := 1;
     I := 1;
     Repeat
           I := I + 1;
           For Y := 1 to 10 do
             For X := 1 to 10 do
               If MapM[X, Y] = I - 1 then
                 Begin
                   If (Y <10) and (MapM[X, Y + 1] = 0) 
and (Map[X, Y+1] = 0) Then MapM[X, Y+1] := I;
                   If (Y >1) 
and (MapM[X, Y-1] = 0) and (Map[X, Y-1] = 0) Then MapM[X, Y-1] := I;
                   If (X <10) 
and (MapM[X+1, Y] = 0) and (Map[X+1, Y] = 0) Then MapM[X+1, Y] := I;
                   If (X >1)
and (MapM[X-1, Y] = 0) and (Map[X-1, Y] = 0) Then MapM[X-1, Y] := I;
                  End;
         If I = 100 then
              Begin
                   WriteLn('You can''t go there!!!');
                   ReadLn;
                   Halt;
              End;
     Until MapM[XE, YE] >0;
     Moves := I - 1;
     X := XE;
     Y := YE;
     I := Moves;
     Map[XE, YE] := 4;
     Repeat
           MovesX[I] := X;
           MovesY[I] := Y;
           Next(X, Y);
           Map[X, Y] := 3;
           I := I - 1;
     Until (X = XS) and (Y = YS);
     Map[XS, YS] := 2;
     For I := 1 to Moves do WriteLn('X = ', MovesX[I],', Y = ', MovesY[I]);
     WriteLn('Total: ', Moves, ' moves');
     ReadLn;
     For Y := 1 to 10 do
         Begin
              For X := 1 to 10 do Write(Map[X, Y], ' ');
              WriteLn;
         End;
     ReadLn;
End.
From Stilet: А почему не оформлен правильно?
Вложения
Тип файла: zip find_labirint (2).zip (229.3 Кб, 10 просмотров)
Если я тебе помог, помоги и ты мне +ом с комментарием

Последний раз редактировалось Stilet; 26.12.2010 в 11:32.
Ponkole вне форума Ответить с цитированием
Старый 26.12.2010, 16:21   #3
Erafiil
 
Регистрация: 29.09.2010
Сообщений: 6
По умолчанию

так мне нужен не просто путь а минимальный из всех возможных
Erafiil вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нахождение мин и макс числа Данил1986 Паскаль, Turbo Pascal, PascalABC.NET 3 07.06.2010 05:46
нахождение пути цикла dima92 Общие вопросы Delphi 2 22.05.2010 06:03
Нахождение минимального пути по графам Nextgen Общие вопросы C/C++ 3 30.12.2009 14:14
Нахождение Мин И Макс элементов Массива не стандартным способом. gree Помощь студентам 5 17.06.2009 20:57
работа с массивами в С++ (нахождение мин и макс числа) Lorden Помощь студентам 10 29.01.2009 21:42