Var i, j, k : integer; a : array [0..9,0..9] of char; procedure U(i,j:integer); var c : char; begin c:=a[i,j]; a[i,j]:=' '; if (c='W')and(a[i+1,j]='B') then U(i+1,j); if (c='B')and(a[i+1,j]='W') then U(i+1,j); if (c='W')and(a[i-1,j]='B') then U(i-1,j); if (c='B')and(a[i-1,j]='W') then U(i-1,j); if (c='W')and(a[i,j+1]='B') then U(i,j+1); if (c='B')and(a[i,j+1]='W') then U(i,j+1); if (c='W')and(a[i,j-1]='B') then U(i,j-1); if (c='B')and(a[i,j-1]='W') then U(i,j-1); end; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); for i:=1 to 8 do begin for j:=1 to 8 do read(a[i,j]); readln end; for i:=1 to 8 do begin a[0,i]:=' '; a[9,i]:=' '; a[i,0]:=' '; a[i,9]:=' ' end; k:=0; for i:=1 to 8 do for j:=1 to 8 do if a[i,j]<>' ' then begin k:=k+1; U(i,j) end; write(k); close(output) end.
Первая строчка спрашивает у человека адрес файла. После ввода получается подобная строчка: "C:\Users\usr\password.txt"
Но там есть такая штука ".split('/')"
Суть её в том, что она разделяет строку и суёт части в массив. В скобках пишется сам разделитель. Если в скобках ничего нет, то разделителем служит пробел. Если выполнить
'hello world guys yes no'.split()
то получим в итоге массив
['hello', 'world', 'guys', 'yes', 'no']
В твоём случае разделителем служит "/". Если ты хотел разделить адрес на составляющие, нужно использовать слеш в другую сторону.
Тут строчка
'C:\Users\usr\password.txt'.split('/')
превратиться в
['C:\Users\usr\password.txt']
То есть не разделиться.
Я думаю задумывалось вот так:
'C:\Users\usr\password.txt'.split('\')
выйдет
['C:', 'Users', 'usr', 'password.txt']
Будем отталкиваться от моего варианта.
Далее идёт цикл for. В нашем случае в цикле for "i" будет равна числу от 0, до кол-ва объектов в массиве.
len(a) - даёт кол-во объектов в массиве.
in range - проходит по числам в определенном диапазоне. Если стоит одно число, то проходится от 0 до него (если число 3, то проходится по числам 0,1,2). Если два числа, то проходится от первого до второго с шагом один (если числа 2 и 5, то проходится по числам 2,3,4). Третье число (все числа записываются через запятую) будет означать шаг. in range(0,40,10) пройдётся по числам 0, 10, 20, 30.
В нашем случае in range проходится по кол-ву объектов в массиве.
В следующей строчке выводится "a[i]". a - это наш массив. i - порядковый номер объекта в массиве (стоит помнить, что массив начинает счёт не с 1, а с 0. Т. е. 0 объект - это первый объект.)
Если в код засунуть путь до файла, то в итоге он тебе выведет каждую часть путя.
i, j, k : integer;
a : array [0..9,0..9] of char;
procedure U(i,j:integer);
var c : char;
begin
c:=a[i,j]; a[i,j]:=' ';
if (c='W')and(a[i+1,j]='B') then U(i+1,j);
if (c='B')and(a[i+1,j]='W') then U(i+1,j);
if (c='W')and(a[i-1,j]='B') then U(i-1,j);
if (c='B')and(a[i-1,j]='W') then U(i-1,j);
if (c='W')and(a[i,j+1]='B') then U(i,j+1);
if (c='B')and(a[i,j+1]='W') then U(i,j+1);
if (c='W')and(a[i,j-1]='B') then U(i,j-1);
if (c='B')and(a[i,j-1]='W') then U(i,j-1);
end;
begin
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
for i:=1 to 8 do begin for j:=1 to 8 do
read(a[i,j]);
readln
end;
for i:=1 to 8 do
begin
a[0,i]:=' '; a[9,i]:=' '; a[i,0]:=' '; a[i,9]:=' '
end;
k:=0;
for i:=1 to 8 do
for j:=1 to 8 do
if a[i,j]<>' ' then
begin
k:=k+1; U(i,j)
end;
write(k);
close(output)
end.
Первая строчка спрашивает у человека адрес файла. После ввода получается подобная строчка: "C:\Users\usr\password.txt"
Но там есть такая штука ".split('/')"
Суть её в том, что она разделяет строку и суёт части в массив. В скобках пишется сам разделитель. Если в скобках ничего нет, то разделителем служит пробел. Если выполнить
'hello world guys yes no'.split()
то получим в итоге массив
['hello', 'world', 'guys', 'yes', 'no']
В твоём случае разделителем служит "/". Если ты хотел разделить адрес на составляющие, нужно использовать слеш в другую сторону.
Тут строчка
'C:\Users\usr\password.txt'.split('/')
превратиться в
['C:\Users\usr\password.txt']
То есть не разделиться.
Я думаю задумывалось вот так:
'C:\Users\usr\password.txt'.split('\')
выйдет
['C:', 'Users', 'usr', 'password.txt']
Будем отталкиваться от моего варианта.
Далее идёт цикл for. В нашем случае в цикле for "i" будет равна числу от 0, до кол-ва объектов в массиве.
len(a) - даёт кол-во объектов в массиве.
in range - проходит по числам в определенном диапазоне. Если стоит одно число, то проходится от 0 до него (если число 3, то проходится по числам 0,1,2). Если два числа, то проходится от первого до второго с шагом один (если числа 2 и 5, то проходится по числам 2,3,4). Третье число (все числа записываются через запятую) будет означать шаг. in range(0,40,10) пройдётся по числам 0, 10, 20, 30.
В нашем случае in range проходится по кол-ву объектов в массиве.
В следующей строчке выводится "a[i]". a - это наш массив. i - порядковый номер объекта в массиве (стоит помнить, что массив начинает счёт не с 1, а с 0. Т. е. 0 объект - это первый объект.)
Если в код засунуть путь до файла, то в итоге он тебе выведет каждую часть путя.
Если C:\Users\usr\password.txt, то код напишет
C:
Users
usr
password.txt
Пиши, если есть вопросы.