Занятие 4. Перестановка элементов массива

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

Задача. Поменять местами столбцы с номерами 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 поставить на место последних.

Файл сохраните на дискете, листинг сдайте учителю для оценки.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: