IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Лабиринт, ПОмогите пожалуйста с лабиринтом
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Андрей

Репутация: -  0  +


Здравствуйте!Помогите пожалуйста с курсовым по Паскалю!Задание примерно состоит в том чтобы сделать программу которая ищет выход из лабиринта.Самому простейшему варианту буду очень рад(желательно с комментариями)Заранее спасибо!
PS Очень оЧЕНЬ надо А я в Паскале не бум бум)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Андрей

Репутация: -  0  +


Все таки вот этот меня зацепил чем то)Я попробывал прокоментировать :

uses
CRT; //ПОдключаем модуль с текстом

const
mx=100; nx=100;//задаем максимальный размер лабиринта
Left=1; Right=-1;//как вот это обозвать не знаю((
Trace=-1;

type
tLabyrinth=array[0..mx,0..nx]of integer;//Создаем тип лабиринт

var
m,n,m1,n1,x,y,dx,dy,k,l,x0,i,j:integer;//Описываем переменные
Lab:tLabyrinth;//привсваеваем Lab наш тип
f:text;//переменная файла
c:char;//символ

procedure Show;//процедура вывода на экран
var
i,j:integer;
begin
for j:=0 to n1 do begin
for i:=0 to m1 do begin//считываем матрицу
l:=Lab[i,j];//присваеваем переменной L каждый елемент массива
if l>0 then begin//если L больше нуля тогда закрашиваем этот елемент и рисуем звездочку
TextColor(l+7);
Write('*');
TextColor(7)
end
else if l=0 then Write(' ')\\если равно нулю то осавляем пустое место
else Write('#');//если больше нуля то пишем решетку
end;
WriteLn
end
end;


procedure Turn(dir:integer; var x,y:integer);//процедура поворота как она работает!?
var
z:integer;
begin
z:=x;//
x:=dir*y;//дир в будующем является const я правильно понимаю?!
y:=-dir*z
end;


procedure Step(var x,y,dx,dy:integer);//ПРоцедура шага
begin
Turn(Left,dx,dy);//идем на лево
while Lab[x+dx,y+dy]>0 do Turn(Right,dx,dy);//пока элементы не равны нулю (мы ходим только по нулям) поворачиваем вправо вправо
x:=x+dx;
y:=y+dy \\ эти две переменные для шага вперед при повороте правильно?
end;


begin
{Read the data file}
Assign(f,'labyrinth_0_0.dat');
ReSet(f);//считываем из файла лабиринт
m1:=-1;// у нас лабиринт окружен бордюрами поэтому ставим минус один
while not EoLn(f) do begin
Read(f,c);
Inc(m1);\\тут определяется количество столбцов
case c of
'1',' ': Lab[m1,0]:=1;
'0': Lab[m1,0]:=0
end
end;
ReadLn(f);
n1:=0;
while not EoF(f) do begin
Inc(n1);//определяем количество столбцов
for i:=0 to m1 do begin
Read(f,c);
case c of
'1',' ': Lab[i,n1]:=1;
'0': Lab[i,n1]:=0
end
end;
ReadLn(f)
end;//заполняем массив
m:=m1-1; n:=n1-1;//это тоже для бордюров или как?!
Close(f);

{Passing}
k:=0;//это переменная означет какой именно вход по счету
WriteLn('Labyrinth ',m,'x',n);
{Probing all the entries}


ВОт тут ваще запара))
for x0:=m downto 1 do if Lab[x0,0]=0 then begin ///мы ищем все входы в лабиринт
Inc(k);
x:=x0;
y:=1;
dx:=0;
dy:=1;\\\Объясните пожалуйста зачем мы вот это присваеваем все
while (y>0)and(y<n1) do begin\\\тут я так понимаю мы делаем так чтобы он просмотривал все лабиринты
Inc(Lab[x,y],Trace);\\\тут чтобы они не пересекались
Step (x,y,dx,dy);///действуем согласно основному алгоритму процедуры Step
end;
Write('Entry ',k,': ');\\\выводим номер лабиринта
if y=0 then WriteLn('No way!') else WriteLn('Passed.');\\\\ПОчему ве зависит от Y?????
for j:=1 to n do for i:=1 to m do if Lab[i,j]<0 then Lab[i,j]:=k+1;\\\это делается для выведения(для Show) а что именно тут происходит?
Show;\\выводим
Write('Press Enter..');
ReadLn;
WriteLn
end;
WriteLn('Done.')
end.




Люди помогите разобраться очень хочеться)))я конечно понимаю что половина моих коментариев полный бред прошу не судить строго))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
keng   Лабиринт   11.09.2011 15:42
TarasBer   1. Изучи основы Паскаля (время у тебя есть). 2. Из…   11.09.2011 16:28
Lapp   сделать программу которая ищет выход из лабиринта.…   12.09.2011 7:36
keng   keng, давай начнем с описания лабиринта. Уточни …   12.09.2011 20:04
TarasBer   Ну на один вопрос ты ответил, ладно. Остался второ…   12.09.2011 20:28
keng   У меня есть некоторые мысли но нужно в одну их соб…   13.09.2011 14:15
TarasBer   Надо дописать в начало процедуры вот это, иначе бу…   13.09.2011 15:26
keng   Да оставил если не сдам отчислят(( А как это все о…   13.09.2011 15:44
TarasBer   Ну пишешь всё это и в конце пишешь begin xk :=…   13.09.2011 16:57
keng   uses wincrt; label 1,2,3; var f:text; i,j,k,xn,jn,…   13.09.2011 17:07
Гость   uses CRT; const mx=100; nx=100; Left=1; Rig…   13.09.2011 18:24
Lapp   Я попробую сделать свой Ловлю на слове ). Я думаю…   14.09.2011 2:49
Lapp   [color=#009900]На всякую гениальную программу найд…   14.09.2011 8:00
keng   Все таки вот этот меня зацепил чем то)Я попробывал…   15.09.2011 14:07
TarasBer   > //дир в будующем является const Чего? Проце…   15.09.2011 14:19
keng   TarasBer Спасибо!Теперь это мне понятно!А …   15.09.2011 14:59
Lapp   Послушай, keng, это же совсем (ну, хорошо, не совс…   16.09.2011 8:52


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 12.09.2025 20:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name