Задача о лабиринте Формулировка. Имеется прямоугольная матрица N x M, который задается лабиринт. Нули в матрице обозначают проход, минус единицы - стены.

Презентация:



Advertisements
Похожие презентации
Массивы в Паскале. Создание массива: var a:array [1..5] of integer; i:integer; begin for i:=1 to 5 do begin write ('a[',i,']='); readln(a[i]); end; end.
Advertisements

9.Задана целочисленная матрица. Вывести N чисел - максимальные значения элементов для каждой строки, где N - количество строк матрицы
PROGRAM example1; const m=100; var a : ARRAY [1.. m] of INTEGER; i,k,n,q : INTEGER; BEGIN readln (n); randomize; WRITELN('Полученный массив:' ); FOR i.
Чтобы переваривать знания, Нужно поглощать их с аппетитом. А. Франс.
Одномерный массив Turbo Pascal 9 класс. Объясните каждый шаг в программе. Что делает программа? Сколько раз срабатывает цикл? Var A : array [1..10] of.
5.Дана матрица А и вектор Х соответствующих размерностей. Нечетные строки матрицы заменить элементами вектора Х. Результаты работы: n=4 m=
Задача Разбить предложение по словам. В предложении могут быть знаки «.», «!», «?» и «,»
Program wr_text; var f: text; st: integer; i:integer; begin assign(f,'l1.TXT'); rewrite(f); write('вводите поочередно числа, после ввода очередного числа.
Алгоритмы на графах Представление графов Построение остовного дерева Нахождение компонент смежности Перебор в глубину и в ширину.
3. Дана прямоугольная матрица, элементами которой являются целые числа. Поменять местами ее строки следующим образом: первую строку с последней, вторую.
Одномерные массивы Введение. I.Описание Массив – это фиксированное кол - во элементов одного и того же типа, объединенных одним именем, каждый элемент.
Вложенные циклы. Если телом цикла является циклическая структура, то такие циклы называются вложенными.
Чтобы найти максимальный элемент в массиве и потом производить с ним какие-либо действия, нужно узнать его номер (индекс - I). Для этого вначале будем.
Дан массив. Найти максимальный и минимальный элементы массива и поменять их местами. Выполнение программы Выполнение программы.
const n=10; var a:array[1..n] of integer; i,j,c,b,k:integer; begin randomize; for i:=1 to n do begin a[i]:=random(11)-5;write(a[i]:5) end;writeln;
Шутилина Л.А., A[1,1]A[1,2]A[1,3]A[1,4]A[1,5] A[2,1]A[2,2]A[2,3]A[2,4]A[2,5] A[3,1]A[3,2]A[3,3]A[3,4]A[3,5] A[4,1]A[4,2]A[4,3]A[4,4]A[4,5]
Обработка символов строки. Дано слово. Переставить первые три и последние три буквы, сохранив порядок их следования.
Пусть нам необходимо сформировать текстовый файл с помощью Паскаля, а затем переписать из данного файла во второй только те строки, которые начинаются.
Оператор присваивания := Ввода Read(x1,x2,…) Readln(x1,x2,…) Вывода Writex(x1,x2,…) Writeln(x1,x2,…) Составной оператор begin …. End;
Способы ввода значений в массив на Паскале 1) Заполнение массива с клавиатуры а) program massiv_1; const n=5; vari: integer; a: array[1..n] of integer;
Транксрипт:

Задача о лабиринте Формулировка. Имеется прямоугольная матрица N x M, который задается лабиринт. Нули в матрице обозначают проход, минус единицы - стены. Нужно определить координаты выходов из этой пещеры (если есть).

Входные данные. Текстовый файл, содержащий размеры матрицы и описание лабиринта Координаты исходной позиции в лабиринте 3 Выходные данные 1,5 3,6

const LabMax = 50; var Lab : array[0..LabMax+1, 0..LabMax+1] of integer; K0, L0 : byte; N, M: integer;

Чтение карты лабиринта из файла и формирование матрицы procedure ReadLab(FileName: string); var i, j : integer; F : Text; begin AssignFile (F, FileName); Reset (F); Readln (F,N); ReadLn (F,M); //Считываем N и M

Чтение карты лабиринта из файла и формирование матрицы for j:=0 to M+1 do lab[0,j] := -1; for i:=1 to N do begin lab[i,0]:=-1; for j:=1 to M do Read (F, Lab[i,j]); Lab[i,M+1]:=-1; end; for j:=0 to M+1 do lab[N+1, j]:=-1; CloseFile(F); end;

Вывод матрицы на экран procedure PrintLab; var i, j : byte; begin for i:=1 to N do begin for j:=1 to M do write(Lab[i,j]:3); writeln; end;

procedure Search (K,L:integer); const deltaK : array[1..4] of integer = (1,0,-1,0); deltaL : array[1..4] of integer = (0,-1,0,1); var A, B : TElem; p,i: integer;

begin A.K:=K; A.L :=L; Lab[A.K, A.L] := 1; Put (A); while (get(A) = 0) do begin if (A.K = 1) or (A.K = N) or (A.L =1) or (A.L = M) then writeln ('Выход: ',A.K,',',A.L); p:=Lab[A.K, A.L]; for i:=1 to 4 do if (Lab[A.K+deltaK[i], A.L+deltaL[i]] = 0) then begin B.K := A.K+deltaK[i]; B.L := A.L+deltaL[i]; put (B); Lab[B.K, B.L] := p + 1; end; end; end;