Дана целочисленная матрица А(11,14). Если элементы очередного столбца упорядочены по возрастанию, то найти в нем номер 1-го элемента со значением, большим В. В противном случае поменять местами верхнюю и нижнюю половины столбца — Pascal(Паскаль)

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.

Leave a Comment

− 2 = 2