Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

помогите с программой-pascal

10K
12 марта 2005 года
тельняшка
2 / / 12.03.2005
народ!!помогите!!срочняк нужна программа в pascal

CОСТАВИТЬ ПРОГРАММУ,ОТЫСКИВАЮЩУЮ ПРОХОД ПО ЛАБИРИНТУ(КАЖДЫЙ КВАДРАТ ЛИБО ЗАКРЫТ,ЛИБО ОТКРЫТ)
301
12 марта 2005 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by тельняшка
народ!!помогите!!срочняк нужна программа в pascal

CОСТАВИТЬ ПРОГРАММУ,ОТЫСКИВАЮЩУЮ ПРОХОД ПО ЛАБИРИНТУ(КАЖДЫЙ КВАДРАТ ЛИБО ЗАКРЫТ,ЛИБО ОТКРЫТ)


Почитай про волновой алгоритм.

366
30 марта 2005 года
int
668 / / 30.03.2005
Цитата:
CОСТАВИТЬ ПРОГРАММУ,ОТЫСКИВАЮЩУЮ ПРОХОД ПО ЛАБИРИНТУ(КАЖДЫЙ КВАДРАТ ЛИБО ЗАКРЫТ,ЛИБО ОТКРЫТ)


Сколько-то лет назад я ради интереса написал такую вещь:

Код:
uses crt,graph;
var f:text;
 yo:boolean;
 i,c,p,posx,posy:integer;
 a:array[0..19,0..19]of byte;
 b:array[0..19,0..19]of boolean;

procedure readfile;
begin
 assign(f,'labirint.dat');
 reset(f);
 read(f,posx);
 read(f,posy);
 for i:=0 to 19 do
  for c:=0 to 19 do
   read(f,a[c,i]);
   close(f);
end;

procedure draw;
begin
 for i:=0 to 19 do
  for c:=0 to 19 do
   begin
    if a[c,i]=1 then p:=10
     else if a[c,i]=0 then p:=0
      else if a[c,i]=2 then p:=9;
    setfillstyle(1,p);
    bar(c*15,i*15,c*15+12,i*15+12);
   end;
end;

procedure recurs(x,y:byte);
begin
 if (x=0)or(x=19)or(y=0)or(y=19)then
  begin
   yo:=true;
   a[x,y]:=2;
   b[x,y]:=true;
   draw;
  end;
if not yo then
 begin
  a[x,y]:=2;
  b[x,y]:=true;
  draw;
  if (a[x-1,y]=0)and(not b[x-1,y]) then recurs(x-1,y);
  if (a[x+1,y]=0)and(not b[x+1,y]) then recurs(x+1,y);
  if (a[x,y-1]=0)and(not b[x,y-1]) then recurs(x,y-1);
  if (a[x,y+1]=0)and(not b[x,y+1]) then recurs(x,y+1);
  a[x,y]:=0;
 end;
end;

begin
 yo:=false;
 readfile;
 i:=0;
 c:=0;
 initgraph(i,c,'c:\bp\bgi');
 a[posx,posy]:=2;
 draw;
 delay(500);
 recurs(posx,posy);
 if yo then outtextxy(300,100,'путь найден')
  else outtextxy(300,100,'путь не найден');
 readln;
 closegraph;
end.

файл labirint.dat выглядит у меня примерно так:
Код:
9 9
1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1
1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1
1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 0 1
1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1
1 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 1
1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1
1 1 1 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1
1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1
1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1
1 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 0 1
1 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1
1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1
1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1
1 0 1 1 1 1 1 0 0 1 0 1 0 0 0 1 0 1 1 1
1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1
1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1
1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Только не надо спрашивать меня, зачме тут столько переменных и как оно работает +) Могу сказать только что используется рекурсия.
10K
05 апреля 2005 года
тельняшка
2 / / 12.03.2005
спасибо огромненькое!!!!даже не знаю как отблагодарить
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог