В прямоугольной матрице, имеющей четное количество строк и четное количество столбцов, слева направо и сверху вниз пронумерованы квадраты из четырех элементов. Определить номер квадрата, для которого сумма входящих в него элементов максимальна — Pascal(Паскаль)

Пример нумерации квадратов для матрицы (6 на 8) элементов:
1 2 3 4
5 6 7 8
9 10 11 12
uses crt;
const nmax=20;
var a:array[1..nmax,1..nmax] of integer;
    m,n,i,j,k,kmx,imx,jmx:byte;
    sm,mx:integer;
begin
clrscr;
randomize;
repeat
write('Количество строк, четное число до ',nmax,' n=');
readln(n);
until (n in [1..nmax])and(n mod 2=0);
repeat
write('Количество столбцов, четное число до ',nmax,' m=');
readln(m);
until (m in [1..nmax])and(m mod 2=0);
for i:=1 to n do
for j:=1 to m do
a[i,j]:=random(20);
k:=0;
kmx:=1;
mx:=a[1,1]+a[1,2]+a[2,1]+a[2,2];
imx:=2;jmx:=2;
for i:=2 to n do
for j:=2 to m do
if (i mod 2=0)and(j mod 2=0) then
 begin
  k:=k+1;
  sm:=a[i,j]+a[i-1,j]+a[i-1,j-1]+a[i,j-1];
  if sm>mx then
   begin
    mx:=sm;
    kmx:=k;
    imx:=i;
    jmx:=j;
   end;
 end;
writeln('Исходная матрица:');
for i:=1 to n do
 begin
  for j:=1 to m do
   begin
    if ((i=imx)and(j=jmx))or((i=imx-1)and(j=jmx))
    or((i=imx-1)and(j=jmx-1))or((i=imx)and(j=jmx-1))then
     begin
      textcolor(12);
      write(a[i,j]:4);
     end
    else
     begin
      textcolor(15);
      write(a[i,j]:4);
     end;
    end;
   writeln;
 end;
writeln;
textcolor(15);
write('Максимальная сумма в квадрате ',kmx,' = ',mx);
readln
end.

Leave a Comment

9 + 1 =