Option explicit sub laba9() dim n as integer, a() as integer, i as byte, j as byte, min as integer, l1 as integer, l2 as integer dim b() as integer n = val(inputbox("введите размерность массива")) redim a(n, n) sheets("лист1").select sheets("лист1").range("a1: z26").clear for i = 1 to n for j = 1 to n a(i, j) = rnd * 100 cells(i, j) = a(i, j) next j next i min = a(1, 1) l1 = 1 l2 = 2 for i = 1 to n for j = 1 to n if a(i, j) < min then min = a(i, j) l1 = i l2 = j end if next j next i redim b(n - 1, n - 1) for i = 1 to l1 - 1 for j = 1 to l2 - 1 b(i, j) = a(i, j) next j for j = l2 + 1 to n b(i, j - 1) = a(i, j) next j next i for i = l1 + 1 to n for j = 1 to l2 - 1 b(i - 1, j) = a(i, j) next j for j = l2 + 1 to n b(i - 1, j - 1) = a(i, j) next j next i for i = 1 to n - 1 for j = 1 to n - 1 cells(i + n + 2, j) = b(i, j) next j next i end sub
samsludmila
07.01.2020
Const n = 4; m = 6; var a: array[1..n, 1..m] of integer; // основной массив rext: array[1..n, 1..2] of integer; // номера столбцов с min и max в строках cext: array[1..2, 1..m] of integer; // номера строк с min и max в столбцах i, j, amin, amax: integer; begin // заполняем массив а случайными числами randomize; writeln('исходный массив'); for i : = 1 to n do begin for j : = 1 to m do begin a[i, j] : = random(100) - 50; write(a[i, j]: 4); end; writeln; end; // заполняем массив rext n x 2 for i : = 1 to n do begin amin : = 10000; //заведомо больше a[i,j] amax : = -10000; //заведомо меньше a[i,j] for j : = 1 to m do begin if amin > a[i, j] then begin amin : = a[i, j]; rext[i, 1] : = j end; if amax < a[i, j] then begin amax : = a[i, j]; rext[i, 2] : = j end end; end; // заполняем массив cext 2 x m for j : = 1 to m do begin amin : = 10000; //заведомо больше a[i,j] amax : = -10000; //заведомо меньше a[i,j] for i : = 1 to n do begin if amin > a[i, j] then begin amin : = a[i, j]; cext[1, j] : = i end; if amax < a[i, j] then begin amax : = a[i, j]; cext[2, j] : = i end end end; writeln; // ищем седловые точки writeln('*** седловые точки ***'); for i : = 1 to n do begin j : = rext[i, 1]; if cext[2, j] = i then write('[', i, ',', j, '] ') else begin j : = rext[i, 2]; if cext[1, j] = i then write('[', i, ',', j, '] ') end end; writeln end. тестовое решение: исходный массив 35 34 -17 -33 20 -29 -8 -31 -4 -20 8 -1 -39 -7 -12 27 42 9 32 13 -17 37 19 -24 *** седловые точки *** [2,5]