Можно эту задачу решить несколькими способами. Первый способ аналогичен перестановке элементов в одномерном массиве, когда в процедуру передаются индексы элементов и массив, в котором надо их поменять. Тогда процедура может быть такой:
Program Example_124;
Procedure Swap1(k1, l1, k2, l2: Integer;
Varx: dmyarray);
Var c: Integer;
Begin
c:=x[k1, l1]; x[k1, l1]:=x[k2,l2];
x[k2,l2]:=c;
End;
Второй способ. Вспомним процедуру Swap, которая меняет местами значения двух целых переменных.
Program Example_125;
Procedure Swap(Varx, у: Integer);
Var z: Integer;
Begin
z:=x; x:=y; y:=z;
End;
А теперь обратимся к ней, передавая данные элементы: Swap(A[k1, l1], A[k2, l2]).
Рассмотрим задачу о перестановке двух столбцов (строк), так как многие задачи используют это действие.
Пример 2
Поменять местами столбцы с номерами l1 и l2. Эту задачу также можно решить несколькими способами. Составим процедуру, в которую будем передавать номера столбцов, и массив, в котором надо их переставить. Кроме того, добавим проверку корректности ввода данных номеров, так как если столбца с данным номером нет, то и переставлять ничего не надо. В самой процедуре можно использовать, например, процедуру Swap
Program Example_126;
Procedure Swap2(l1, l2: Integer;
Var x: dmyarray);
Var i: Integer;
Begin
If (l1<1) Or (l1>m)) Or (l2<1)
Or (12>m)) Then
Writeln ('Ввод неправильный')
Else
For i:=1 To m Do
Swap(x[i, l1], x[i, l2]);
End;
Если применять первую процедуру Swap1, то после проверки правильности ввода данных будет такое обращение:
For i:=1 То m Do
Swap1(i, l1, i, l2, x);