АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Перебор элементов массива

Читайте также:
  1. Алгоритмы упорядочивания элементов в массивах
  2. Биогеохимические круговороты основных химических элементов в биосфере
  3. В зависимости от наличия тех или иных морфологических элементов сыпи выделяют различные типы дермального ангиита.
  4. Влияние легирующих элементов на структуру и механические свойства сталей
  5. Внешняя среда организации: значение, определение, взаимосвязь элементов.
  6. Возможности использования элементов налоговой политики и налогового учета организации для целей оптимизации налоговых потоков
  7. Вынос основных элементов питания с тонной основной и соответствующим количеством побочной продукции, кг (минеральные почвы)
  8. Глава 4. ОСНОВЫ КОМПОНОВКИ ЭЛЕМЕНТОВ В ЛОГИЧЕСКИХ СХЕМАХ И ОСОБЕННОСТИ ПРИМЕНЕНИЯ СИСТЕМНЫХ СООТНОШЕНИЙ
  9. Групповые названия элементов
  10. Дать характеристику одного из элементов - неметаллов (хлора, серы, фосфора, азота, углерода, кремния) (все по выбору).
  11. Действительно возможный урожай, вынос элементов урожаем, запасы пит.веществ в почве, коэффициент использования пит.веществ из почвы и удобрений
  12. Добавление и удаление элементов диаграммы

Элементы массива можно обрабатывать, двигаясь от начала массива к его концу или в обратном направлении:

for i:= 1 to n do for i:= n downto 1 do

{обработка a[i]}; {обработка a[i]};

Можно обрабатывать сразу по два элемента, двигаясь одновременно с обеих сторон:

i:= 1; {задание нижней границы индекса}

j:= n; {задание верхней границы индекса}

while i <= j do

begin

{обработка a[i] и a[j]};

i:= i + 1; {движение слева направо, индекс увеличивается}

j:= j - 1 {движение справа налево, индекс уменьшается}

end;

Можно задавать различные линейные схемы перебора элементов массива (с постоянным шагом).

Если необходимо перебирать только четные элементы массива, то это может быть реализовано следующим образом:

Вариант 1.

i:=2; {индекс начинает изменяться с четного числа 2,}

while i<=n do {величина шага, равная двум, обеспечивает}

begin {сохранение четности индекса}

{обработка a[i]}

i:=i+2

end;

Вариант 2.

for i:=1 to n do {внутрь цикла перебора вложен оператор,}

if i mod 2 = 0 {проверяющий четность индекса. Работает эта схема}

then {дольше предыдущей}

{обработка a[i]};

Вариант 3.

for i:=1 to n div 2 do {используется формула четного числа. Поскольку}

{обработка a[2*i]}; {элементов с четным индексом - половина от }

{количества, то переменная цикла i изменяется до}

{ n div 2 }

Упражнение. Внесите изменения в предложенные выше фрагменты, которые необходимы для того, чтобы перебирались:

а) нечетные элементы массива, двигаясь от начала массива;

б) нечетные элементы, двигаясь от конца массива к его началу;

в) нечетные элементы при движении одновременно с начала и конца массива.

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

Пример. Организуйте перебор элементов массива, индексы которого являются степенями двойки, т.е. 1, 2, 4, 8, 16 и т.д. Предлагается следующее решение этой задачи:

i:=1;

while i<=n do

begin {обработка a[i]};

i:=i*2

end;

Упражнение. Организуйте перебор элементов массива, индексы которого являются:

* полными квадратами, т.е. 1, 4, 9, 16, 25,...;

* числами Фибоначчи, т.е. 1, 2, 3, 5, 8, 13,...

Часто формулы, определяющие очередной элемент массива при нелинейной схеме перебора, могут быть достаточно сложными, для реализации которых нужно использовать дополнительные вложенные циклы.

Пример. Организуйте перебор элементов массива, индексами которых являются простые числа.

Решение. Необходимо вспомнить, что простыми называются числа, которые делятся на 1 и на само себя. Организуем внешний цикл, который будет перебирать все индексы массива, а внутренний цикл будет определять, является ли этот индекс простым числом. Для этого будем рассматривать все возможные делители для индекса i из интервала [2; i] (поскольку на 1 делятся все числа) до тех пор, пока индекс не разделится нацело на очередной делитель. Если при этом делитель и i совпадут, следовательно, i - простое число, иначе - нет.

for i:= 1 to n do

begin

j:= 1; {j - делитель}

repeat

j:= j + 1;

until i mod j = 0;

if i = j then {обработка a[i]};

end;


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)