Информатика. Помогите с 3 номером. Готовлюсь, не знаю как решить. Плиз
Answers & Comments
140201
Var a,b:array[1..100,1..100] of byte; n,i,j,x,y,z: byte; k,s,sa:integer; begin write('введите размер поля N: '); readln(n); writeln('введите массив:'); for i:=1 to n do begin for j:=1 to n do begin read (a[i,j]); end; end; b:=a; k:=0; s:=0; for i:=1 to n do begin for j:=1 to n do begin s:=s+a[i,j]; if b[i,j]=1 then begin k:=k+1; x:=i; y:=j; while b[x,y]=1 do begin z:=0; while b[x,y]=1 do begin b[x,y]:=2; z:=z+1; y:=y+1; end; x:=x+1; y:=y-z; end; end; end; end; sa:=Floor(s/k); writeln ('Количество кораблей = ',k); writeln ('Средний размер кораблей = ',sa); end. ----------------------------------------- Пример: введите размер поля N: 7 введите массив: 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0
Количество кораблей = 3 Средний размер кораблей = 4
Answers & Comments
a,b:array[1..100,1..100] of byte;
n,i,j,x,y,z: byte;
k,s,sa:integer;
begin
write('введите размер поля N: ');
readln(n);
writeln('введите массив:');
for i:=1 to n do begin
for j:=1 to n do begin
read (a[i,j]);
end;
end;
b:=a;
k:=0;
s:=0;
for i:=1 to n do begin
for j:=1 to n do begin
s:=s+a[i,j];
if b[i,j]=1 then begin
k:=k+1;
x:=i; y:=j;
while b[x,y]=1 do begin
z:=0;
while b[x,y]=1 do begin
b[x,y]:=2; z:=z+1;
y:=y+1;
end;
x:=x+1; y:=y-z;
end;
end;
end;
end;
sa:=Floor(s/k);
writeln ('Количество кораблей = ',k);
writeln ('Средний размер кораблей = ',sa);
end.
-----------------------------------------
Пример:
введите размер поля N: 7
введите массив:
0 0 0 0 0 0 0
0 0 1 1 1 0 0
0 0 1 1 1 0 0
0 0 0 0 0 0 0
0 1 0 1 1 0 0
0 1 0 1 1 0 0
0 0 0 0 0 0 0
Количество кораблей = 3
Средний размер кораблей = 4