Теоретический материал (Паскаль)

Перестановка элементов массива

Рассмотрим задачу о перестановке двух столбцов (аналогично и для строк), так как многие задачи используют именно это действие.

Задача. Поменять местами столбцы с номерами m1 и m2.

Эту задачу можно реализовать несколькими способами. Мы составим две процедуры, причем процедура обмена столбцами содержит в себе процедуру обмена значениями двух переданных ей ячеек массива. Рассмотрите их.

Procedure Swap2(Var X : MyArray2; n, m, m1, m2 : integer);
Var
  i : integer;
Procedure Swap1(Var elem1, elem2 : integer);
Var
  z : integer;
Begin
  z:=elem1;
  elem1:=elem2;
  elem2:=z;
End;
Begin
  if((m1<1) or (m1>m)) or ((m2<1) or (m2>m))
    then
      writeln('?')
    else
      for i := 1 to n do
        Swap1(X[i, m1], X[i, m2]);
End;

Вопрос. Какое сообщение должно быть выведено оператором writeln вместо знака вопроса и почему?