code:
# pascal program PascalGuru;
var
A: array [1 .. 11, 1 .. 14] of integer;
i, j, B: integer;
{ -------------------------------------------- }
procedure vvod; { процедура ввода массива }
var
i, j: integer;
begin
for i := 1 to 11 do
for j := 1 to 14 do
begin
write('A[', i, ',', j, ']=');
readln(A[i, j]);
end; { считываем сам массив }
end;
{ -------------------------------------------- }
procedure vyvod; { процедра вывода массива на экран }
var
i, j: integer;
begin
for i := 1 to 11 do
begin
writeln;
for j := 1 to 14 do
write(A[i, j]:8, ' ');
end; { выводим массив }
end;
{ -------------------------------------------- }
function pr_sort(j: integer): boolean;
{ Проверка, что элементы столбца "j" упорядочены по возрастанию }
var
i: integer;
rez: boolean;
begin
rez := true;
for i := 1 to 10 do
if A[i, j] > A[i + 1, j] then
begin
rez := false;
break;
end;
pr_sort := rez;
end;
{ -------------------------------------------- }
function search_el(j, B: integer): integer;
{ В столбце "j" находит номер 1-го элемента со значением, большим "b" }
var
i: integer;
rez: integer;
begin
for i := 1 to 11 do
if A[i, j] > B then
begin
rez := i;
break;
end;
search_el := rez;
end;
{ -------------------------------------------- }
procedure exchange(var A, B: integer);
var
c: integer;
begin
c := A;
A := B;
B := c;
end;
{ ******************************************* }
procedure exchange_st(j: integer);
{ обмен местами верхней и нижней половины столбца "j" }
var
i: integer;
begin
for i := 1 to 5 do
exchange(A[i, j], A[i + 6, j]);
end;
{ -------------------------------------------- }
begin
vvod; { вводим массив }
writeln('Vot ISHODNYE elementy massiva [11x14]: ');
vyvod; { выводим массив на экран }
writeln;
write('B= ');
readln(B); { считываем значение "B" }
for j := 1 to 14 do { проходим циклом по всем столбцам }
if pr_sort(j)
then { Если элементы текущего столбца упорядочены по возрастанию }
writeln('V ', j, ' stolbce nomer pervogo (>', B, ')= ', search_el(j, B))
{ то находим в нем номер 1-го элемента со значением, большим В }
else
exchange_st(j);
{ иначе меняем местами верхнюю и нижнюю половины текущего столбца }
writeln('Vot OBNOVLENNYI massiv [11x14]: ');
vyvod; { выводим обновленный массив на экран }
readln;
end.