Задача. Поменять местами два элемента массива с номерами k1 и k2.
Рассмотрите процедуру, с помощью которой эта задача легко решается.
Procedure Obmen2(Var m: MyArray; n, k1, k2: integer;);
Var
x: integer;
Begin
x:=m[k1];
m[k1]:= m[k2];
m[k2]:= x;
End;
Перестановка части массива
Задача. Дан одномерный массив А, состоящий из 2n элементов. Поменять местами первую и вторую его половины
Задание. Оформите решение этой задачи, применив процедуру обмена значений Obmen2, рассмотренную выше.
Заметим лишь, что Вы должны поменять местами элементы с номерами 1 и n+1, 2 и n+2 и т.д., последняя пара – n и 2n, а значит, обмен происходит по правилу: элемент с номером i меняется местами с элементом с номером n+i. Эту закономерность следует применить в организации обращения к процедуре обмена. Например, так
for i:= 1 to n do
Obmen2(A, 2*n, i, i+n,);
Задание. Выберите с учителем задачи для самостоятельного решения из предложенного списка:
1. Поменять местами:
а) первый элемент и максимальный;
б) второй и минимальный;
в) первый и последний из отрицательных чисел.
|
|
2. Дан одномерный массив А, состоящий из 2n элементов. Поменять его половины следующим образом: первый элемент поменять с последним, второй с предпоследним и так далее.
3. Дан одномерный массив В, состоящий из 2n элементов. Переставить его элементы по следующему правилу:
а) b[n+1], b[n+2],..., b[2n],b[1], b[2],..., b[n];
b) b[n+1], b[n+2],..., b[2n],b[n], b[n-1],..., b[1];
c) b[1], b[n+1],b[2], b[n+2],..., b[n], b[2n];
d) b[2n], b[2n-1],..., b[n+1],b[1], b[2],..., b[n];
4. Дан одномерный массив. Переставить в обратном порядке элементы массива, расположенные между минимальным и максимальным элементами.