Df: Процесс нахождения элемента в последовательности по значению одного или более чем одного поля называется поиском в последовательности. Линейный поиск заключается в последовательном просмотре всех элементов массива до тех пор пока либо будет найден искомый элемент, либо пока не закончатся элементы массива. Для реализации алгоритма заведем переменную логического типа flag, с помощью которой можно будет выйти из цикла в случае нахождения искомого элемента.
Реализация:
write(' Введите образец для поиска');
readln(key);
flag:=FALSE; {совпадений нет}
i:=1;
repeat
if a[i] = key then flag:=TRUE {совпадение с образцом}
else i:=i+1; {переход к следующему элементу}
until (i>n) or flag; {окончание цикла, если произошло совпадение с образцом или проверены все элементы массива}
if flag then writeln(' Совпадение с элементом номер которого = ', i)
else writeln(' Совпадений с образцом нет');
Инвертирование массива
Суть алгоритма, состоит в перестановке элементов массива в обратном порядке, т.е. меняет местами первый с последним элементом, второй с предпоследним элементом массива и т.д. Число перестановок равно n div 2, т.к. если менять местами элементы n раз, то все элементы массива встанут на свои места.
|
|
Реализация:
for i:=1 to n div 2 do
begin
{ Обменяем i-й и (n-i+1)-й элементы}
temp:=a[i];
a[i]:=a[n-i+1];
a[n-i+1]:=temp
end;
Циклический сдвиг элементов массива вправо (влево) на М позиций
При решении задач, в которых необходимо вставить элемент в массив используется циклический сдвиг элементов. В этом алгоритме сначала запоминаем последний элемент, если сдвиг будем делать вправо (первый элемент, если сдвиг влево). Затем сдвигаем элементы, т.е. на n место ставим n-1 элемент, на n-1 ставим n-2, и т.д. на 2-е место ставим 1-й элемент, тем самым как бы освободив первую позицию. Наконец, на первое место записываем последний элемент, который хранится во вспомогательной переменной. Подобные действия повторяются m раз, т.е. число раз, на которое необходимо осуществить сдвиг. Мы рассмотрели циклический сдвиг на m позиций вправо.
Реализация:
{Циклический сдвиг на m позиций вправо}
writeln(‘ Введите число сдвигов’);
readln(m);
for i:=1 to m do
begin
{Запоминаем последний элемент массива}
temp:=a[n];
{Сдвиг элементов массива на одну позицию вправо}
for j:= n downto 2 do a[j]:=a[j-1];
a[1]:= temp
end;
{Печать измененного массива}
for i:=1 to n do writeln(‘a[‘, i, ‘]= ’, a[i]);