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

Повторение

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 элементов. Поменять его половины следующим образом; первый элемент поменять с последним, второй — с предпоследним и так далее.

Домашнее задание: подготовиться к контрольной работе: повторение, решение задач.