До ! информатика 8 класс. программу, которая печатает true, если точка с координатами (х,y) принадлежит заштрихованной области, и false в противном случае. 4 (ромб) и 10
Для формирования сводного отчета по документооборотам выполните действия:
1. Выберите в главном меню «Действия – Сформировать отчет».
Откроется окно «Формирование отчета».
2. Укажите период, за который необходимо сформировать отчет по документооборотам. Для этого воспользуйтесь встроенным календарем или ссылками:
за все время - автоматически проставляется период с начала использования программы по текущую дату.
за месяц - автоматически проставляется период за месяц от текущей даты.
за неделю - автоматически проставляется период за дней от текущей даты.
3. Выберите документообороты, которые необходимо отобразить в сводном отчете при чекбоксов.
4. Укажите при необходимости для каждого направления документооборота дополнительные параметры, нажав на значок .
5. Развернется форма <Название направления документооборота> , например «Налоговая служба».
6. После того как все необходимые параметры отчета заполнены, нужно нажать на кнопку «Сформировать отчет». Начнется процесс формирования отчета, по окончании которого откроется окно просмотра отчета.
type maze = array [1..k, 1..k] of integer; var l : maze; n, m: integer; i, j: integer; c: char; t: text; w: integer; x0, y0: integer; x1, y1: integer;
procedure ways(a,b,r:integer); begin if (w = 0) or (r < w) then {нет смысла идти дальше, если текущий путь уже превосходит найденный} if (l[a,b] <> -2) then if (r < l[a,b]) or (l[a,b] = -1) then {нет смысла идти, если текущая клетка уже была достигнута за меньшее число шагов} begin l[a,b] := r; if (a = x1) and (b = y1) then w := r else begin if a <> 1 then ways(a - 1, b, r + 1); if b <> 1 then ways(a, b - 1, r + 1); if a <> n then ways(a + 1, b, r + 1); if b <> m then ways(a, b + 1, r + 1); end end; end; begin assign(t, 'input.txt'); reset(t); w := 0; readln(t, n, m); readln(t, x0, y0); readln(t, x1, y1); for i := 1 to n do begin for j := 1 to m do begin read(t, c); case c of '.' : l[i,j] := -1; {будем считать, что если клетка отмечена как -1, то путь к ней еще не найден} 'X' : l[i,j] := -2; {-2, если клетка непроходима} end; end; readln(t) end; close(t); if (l[x0,y0] <> -2) and (l[x1,y1] <> -2) then begin l[x0,y0] := 1; {просто трюк, чтобы пройти проверку на (r < l[x0,y0])} ways(x0, y0, 0); end else l[x1,y1] := -1; writeln(l[x1,y1]) end.
Для формирования сводного отчета по документооборотам выполните действия:
1. Выберите в главном меню «Действия – Сформировать отчет».
Откроется окно «Формирование отчета».
2. Укажите период, за который необходимо сформировать отчет по документооборотам. Для этого воспользуйтесь встроенным календарем или ссылками:
за все время - автоматически проставляется период с начала использования программы по текущую дату.
за месяц - автоматически проставляется период за месяц от текущей даты.
за неделю - автоматически проставляется период за дней от текущей даты.
3. Выберите документообороты, которые необходимо отобразить в сводном отчете при чекбоксов.
4. Укажите при необходимости для каждого направления документооборота дополнительные параметры, нажав на значок .
5. Развернется форма <Название направления документооборота> , например «Налоговая служба».
6. После того как все необходимые параметры отчета заполнены, нужно нажать на кнопку «Сформировать отчет». Начнется процесс формирования отчета, по окончании которого откроется окно просмотра отчета.
const
k = 100;
type
maze = array [1..k, 1..k] of integer;
var
l : maze;
n, m: integer;
i, j: integer;
c: char;
t: text;
w: integer;
x0, y0: integer;
x1, y1: integer;
procedure ways(a,b,r:integer);
begin
if (w = 0) or (r < w) then {нет смысла идти дальше, если текущий путь уже превосходит найденный}
if (l[a,b] <> -2) then
if (r < l[a,b]) or (l[a,b] = -1) then {нет смысла идти, если текущая клетка уже была достигнута за меньшее число шагов}
begin
l[a,b] := r;
if (a = x1) and (b = y1) then
w := r
else
begin
if a <> 1 then ways(a - 1, b, r + 1);
if b <> 1 then ways(a, b - 1, r + 1);
if a <> n then ways(a + 1, b, r + 1);
if b <> m then ways(a, b + 1, r + 1);
end
end;
end;
begin
assign(t, 'input.txt');
reset(t);
w := 0;
readln(t, n, m);
readln(t, x0, y0);
readln(t, x1, y1);
for i := 1 to n do
begin
for j := 1 to m do
begin
read(t, c);
case c of
'.' : l[i,j] := -1; {будем считать, что если клетка отмечена как -1, то путь к ней еще не найден}
'X' : l[i,j] := -2; {-2, если клетка непроходима}
end;
end;
readln(t)
end;
close(t);
if (l[x0,y0] <> -2) and (l[x1,y1] <> -2) then
begin
l[x0,y0] := 1; {просто трюк, чтобы пройти проверку на (r < l[x0,y0])}
ways(x0, y0, 0);
end
else
l[x1,y1] := -1;
writeln(l[x1,y1])
end.