
Bea
6 год назад
Информатика. Помогите с 3 номером. Готовлюсь, не знаю как решить. Плиз

ОТВЕТЫ

Leonovich
Jul 20, 2019
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
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
220
Смежные вопросы: