const num_cols = 5; num_rows = 4; type tcolumn = array[1 .. num_rows] of integer; tvector = array[1 .. num_cols] of integer; tmatrix = array[1 .. num_cols] of tcolumn; TCriteria = function(const V: tvector; const size: integer): integer; procedure input_check(var A: tmatrix; var B: tvector; const n_cols, n_rows: integer); var i, j: integer; begin for i := 1 to n_cols do B[i] := 0; for j := 1 to n_rows do for i := 1 to n_cols do begin write('A[',j,',',i,'] = '); readln(A[i][j]); if A[i][j] <= 0 then inc(B[i]); end; end; procedure print(const A: tmatrix; const n_cols, n_rows: integer); var i, j: integer; begin for j := 1 to n_rows do begin for i := 1 to n_cols do write(A[i][j]:4); writeln; end; end; function max(const V: tvector; const size: integer): integer; far; var i, max_val: integer; begin max_val := V[1]; for i := 2 to size do if max_val < V[i] then max_val := V[i]; max := max_val; end; procedure delete_row(var A: tmatrix; const B: tvector; f: TCriteria; var n_cols, n_rows: integer); var i, j: integer; max_val: integer; begin max_val := f(B, num_cols); for i := n_cols downto 1 do if B[i] = max_val then begin for j := i to pred(n_cols) do A[j] := A[j+1]; dec(n_cols); end; end; var A: tmatrix; B: tvector; n_cols, n_rows: integer; begin input_check(A, B, num_cols, num_rows); print(A, num_cols, num_rows); n_cols := num_cols; n_rows := num_rows; delete_row(A, B, max, n_cols, n_rows); print(A, n_cols, n_rows); readln; end.