Рассмотрим задачу о перестановки двух столбцов (аналогично и для строк), так как многие задачи используют именно это действие.
Задача. Поменять местами столбцы с номерами m1 и m2.
Эту задачу можно реализовать несколькими способами. Мы составим две процедуры, причем процедура обмена столбцами содержит в себе процедуру обмена значениями двух переданных ей ячеек массива. Рассмотрите их.
Procedure Swap2(Var X: MyArray2; n, m, m1, m2: integer;);
Var
i, j: 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 m do
Swap1(X[i, m1], X[i, m2]);
End;
Вопрос. Какое сообщение должно быть выведено оператором writeln вместо знака вопроса и почему?
Задание. Выберите с учителем задачи из предложенного списка. Решите их, применяя подпрограммы, приготовьте для проверки 3-4 различных теста.
Задачи для самостоятельного решения
1. В квадратном массиве поменять местами строку и столбец, на пересечении которых находится ноль. Если такого элемента нет, то вывести сообщение об этом.
2. Поменять местами каждые две строки массива.
3. В каждой строке переставить первый отрицательный и последний положительный элементы. Поменять местами столбцы, в которых находятся первый встреченный максимальный и последний минимальный элементы. Если такого столбца или строки нет, то вывести сообщение об этом.
4. Если количество столбцов нечетно, то поменять первый и средний столбец, если четно, то средние два столбца поменять с первым и последним соответственно.
5. Поменять местами первую строку и строку, в которой находится первый нулевой элемент.
6. В двумерном массиве переставить строки следующим образом: первую с последней, вторую с предпоследней и так далее. Если строк нечетное количество, то средняя останется неизменной, иначе средние строки тоже меняем местами.
7. Дан двумерный массив. Расставить его столбцы следующим образом: последний, предпоследний,..., второй, первый.
8. Дан двумерный массив. Начиная с первой строки, сдвинуть все строки на две вниз, а последние две перенести на место первых двух строк.
9. Первые k столбцов сдвинуть назад, а последние k поставить на место первых.
10. Дан двумерный массив. Расставить его строки следующим образом: первая, последняя, вторая, предпоследняя, третья,....
11. Начиная с k-го столбца, сдвинуть их вперед, а первые k поставить на место последних.
Файл сохраните на дискете, листинг сдайте учителю для оценки.