Тема: Перестановки элементов массива
Повторение
1. Как описать одномерный массив?
2. Как задать значения его элементов?
3. Как вывести массив на экран?
4. Как найти сумму элементов массива?
5. Как найти номер заданного элемента массива?
6. Как найти количество элементов массива с заданными свойствами?
7. Как определить, обладают ли все элементы массива некоторым свойством?
Перестановка двух элементов
Пример
Поменять местами значения двух элементов с номерами kl и к2 (где kl и к2 вводятся с клавиатуры).
Решение
Опишем процедуру, которой будем передавать номера переставляемых элементов и массив.
Procedure Swap(kl, k2: Integer; Var m: myarray);
Var x: Integer;
Begin
x:=m[kl]; m[kl]:=m[k2]; m[k2]:=x;
End;
Примечание. Задача о перестановке двух элементов с заданными свойствами сводится к этой задаче — надо только найти их номера.
Перестановка нескольких элементов (части) массива
Пример
Дан одномерный массив А, состоящим из 2n элементов. Поменять местами его половины.
Решение
Пусть массив A состоит из 10 элементов, то есть n=5 : 1, 12, 23, 3, 7, 13, 27, б, 9, 11. Тогда если мы поменяем местами его половины, то получим такой массив A: 13, 27, 6, 9, 11, 1, 12, 23, 3, 7. Заметим, что мы меняем местами элементы с номерами 1 и n+1, 2 и n+2 и так далее; последняя пара — n и 2n. Легко заметить и то, что элемент с номером i меняется местами с элементом с номером n+i. Поэтому, используя процедуру Swap из примера, можно в основной программе применить цикл:
For i:=l To n Do Swap(i, i+n, A);
Решение задач
1. Поменять местами:
a) первый и максимальный элементы массива;
b) второй и минимальный элементы массива;
c) первый и последний отрицательный элементы массива.
2. Дан одномерный массив А, состоящий из 2n элементов. Поменять его половины следующим образом; первый элемент поменять с последним, второй — с предпоследним и так далее.
Домашнее задание: подготовиться к контрольной работе: повторение, решение задач.


