Pers.narod.ru. Алгоритмы. Элементы матрицы, все соседи которых больше их |
В заданной матрице A[n,n] вывести те её элементы, все соседи которых больше данного элемента. Соседство учитывается только по горизонтали и вертикали.
Мне было лень обрабатывать с помощью условий особые случаи "соседства" элементов по краям матрицы (для первых и последних строки и столбца), я сделал так, как часто и поступают ленивые программисты на практике - просто описал матрицу с индексами строки и столбца 0..n+1 вместо 1..n и заполнил образовавшуюся "кайму" значениями MAXINT (максимальное целое, все целые будут меньше этого значения). Теперь "соседство" описывается элементарно одним условием.
const n=3; var a:array [0..n+1,0..n+1] of integer; i,j,t:integer; begin writeln ('Matrix:'); for i:=1 to n do for j:=1 to n do read (a[i,j]); for j:=1 to n do begin a[0,j]:=MAXINT; a[n+1,j]:=MAXINT; a[j,0]:=MAXINT; a[j,n+1]:=MAXINT; end; writeln ('Items'); for i:=1 to n do for j:=1 to n do begin t:=a[i,j]; if (a[i-1,j]>t) and (a[i+1,j]>t) and (a[i,j-1]>t) and (a[i,j+1]>t) then write (t,' '); end; reset (input); readln; end.
гостевая; E-mail |