ВУЗ:
Составители:
Рубрика:
pLast1 := pEnd; pFirst := pEnd;
end;
case c of {изменение координат комнаты }
'n', 'N' : inc(y);
'e', 'E' : inc(x);
's', 'S' : dec(y);
'w', 'W' : dec(x);
else Error('найден неверный символ в input.txt!');
end;
if (x >= 0) then if (y >= 0) then ppl := @pLast1 else ppl := @pLast2
else if (y >= 0) then ppl := @pLast4 else ppl := @pLast3;
p := ppl^; {выбираем нужный список комнат}
while (p <> nil) and ((p^.x <> x) or (p^.y <> y)) do p := p^.prev;
if (p = nil) then begin {если комната не найдена}
if (MemAvail < 32) then Error('Не хватает динамической памяти !');
new(p); inc(nRooms);
p^.x := x; p^.y := y;
p^.lab := -1;
p^.pN := nil; p^.pE := nil; p^.pS := nil; p^.pW := nil;
p^.prev := ppl^; ppl^ := p;
end;
case c of {делаем связи между комнатами}
'n', 'N' : begin pEnd^.pN := p; p^.pS := pEnd; end;
'e', 'E' : begin pEnd^.pE := p; p^.pW := pEnd; end;
's', 'S' : begin pEnd^.pS := p; p^.pN := pEnd; end;
'w', 'W' : begin pEnd^.pW := p; p^.pE := pEnd; end;
end;
pEnd := p; {указатель последней комнаты }
if (nRooms mod 500) = 0 then begin
write('найдено пока ', nRooms);
gotoxy(39, 7);
end;
end;
procedure SetLabels; {расстановка меток для кратчайшего пути }
var pQ : PQueue;
pnt : pointer;
p : proom;
lab : longint;
Страницы
- « первая
- ‹ предыдущая
- …
- 59
- 60
- 61
- 62
- 63
- …
- следующая ›
- последняя »