Прога частично напоминает морской бой. Задается поле, на нем можно расставлять острова (один квадрат –ик один остров). После расставления островов, прога должна сосчитать их кол-во.
Мне неясно - в чем именно трудность? Я сейчас тупо по написанному составил код - и он работает. Может, он поможет тебе разобраться.
const mx=8; my=8; var Z:array[1..mx,1..my]of integer; i,j,x,y,n:integer; Flag:boolean;
begin {Задание массива случайным образом} for j:=1 to my do for i:=1 to mx do Z[i,j]:=-Random(2); for j:=1 to my do begin for i:=1 to mx do case Z[i,j] of 0:Write('~'); -1:Write('X'); end; WriteLn end; {Реализация алгоритма} n:=0; for y:=1 to my do for x:=1 to mx do if Z[x,y]=-1 then begin Inc(n); Z[x,y]:=n; repeat Flag:=false; for j:=1 to my do for i:=1 to mx do if (Z[i,j]=-1)and((i>1)and(Z[i-1,j]=n)or(i<mx)and(Z[i+1,j]=n)or(j>1)and(Z[i,j-1]=n)or(j<my)and(Z[i,j+1]=n)) then begin Z[i,j]:=n; Flag:=true end until not Flag end; WriteLn('Total islands: ',n); ReadLn end.
--------------------
я - ветер, я северный холодный ветер я час расставанья, я год возвращенья домой