Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы обработки данных.doc
Скачиваний:
7
Добавлен:
24.11.2018
Размер:
595.46 Кб
Скачать

5.3.2.Алгоритм нахождения суммы элементов одномерного массива

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

, а если раскрыть смысл значка суммы, то получим следующее:

. Исходя из этого, для решения задачи воспользуемся следующим циклическим алгоритмом:

  1. Зададим S=0.

  2. Организуем цикл по i=1,2,...,N на каждом шаге которого будем выполнять следующее действие:.

Оформим указанные действия в виде графической схемы (рис.5.5(а))

а) б)

Рис.5.5. Графическая схема алгоритма вычисления суммы (а) и произведения (б)

Замечание1. Вычисление произведения элементов одномерного массива производится по аналогичному алгоритму.

Пусть нужно вычислить

.

Тогда:

  1. Зададим P=1.

  2. Организуем цикл по i=1,2,...,N на каждом шаге которого будем выполнять следующее действие:

.

Графическая схема такого алгоритма представлена на рис.5.5(б).

Замечание 2. Если нужно суммировать или перемножать не все элементы массива, а только лишь те, для которых выполняется заданное условие, то перед суммированием (умножением) необходимо проверять это условие, и выполнять суммирование (умножение) только тогда, когда условие выполняется. Такой случай рассмотрен в примере 5.2.

Замечение 3. Определение количества элементов массива, значения которых удовлетворяют некоторому условию (например, xi>0) осуществляется по алгоритму, во многом схожему на алгоритм вычисления суммы. Обозначим количество через K.

Тогда:

  1. Зададим K=0.

  2. Организуем цикл по i=1,2, …, N на каждом шаге которого будем проверять выполнение условия для i-элемента массива. В случае, если условие выполняется производим действие K=K+1.

Пример 5.2. Найти среднее арифметическое положительных чисел среди элементов массива, стоящих на нечетных местах и произведение чисел массива, меньших заданного С.

Решение. Особенностью данной задачи является то, что она состоит из 2-х подзадач, осуществляющих обработку элементов одного и того же массива:

  1. Вычисление среднего арифметического положительных чисел. Для ее решения понадобиться цикл по i=1,3,5,…,N, т.е. с шагом изменения =2. Среднее арифметическое можно вычислить по формуле , где S – сумма положительных чисел, стоящих на нечетных местах, а K-их количество. Перед его вычислением нужна проверка условия K0, т.к. в противном случае (когда таких чисел нет) расчет m невозможен.

  2. Вычисление произведения чисел, меньших заданного С. Для ее решения нужен цикл по i=1,2,…,N. А чтобы убедиться, что числа < C в массиве были, введем в схему дополнительную величину t. Перед началом вычисления произведения установим для нее значение =0, а как только будет найдено значение элемента массива < C, установим t=1. Таким образом, t играет роль сигнала о наличии в массиве чисел < C. Схема алгоритма приведена на рис.5.6.

Рис.5.6. Схема алгоритма примера 5.2

5.3.3. Алгоритм нахождения минимального или максимального элемента массива и его порядкового номера

Пусть в одномерном массиве x из N числовых элементов нужно найти минимальное (наименьшее) значение и его порядковый номер, например, в следующем массиве

х1

х2

х3

х4

х5

х0

-3

12

-5

-7

20

101

наименьшее значение =-7, а порядковый номер этого элемента =4.

Обозначим наименьшее значение величиной min, а его порядковый номер величиной n_min. Тогда для их поиска воспользуемся следующим алгоритмом:

  1. Зададим min=x1 и n_min=1

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

  1. Организуем цикл по i=2,3,…,N внутри которого будем проверять условие xi<min.

В случае выполнения этого условия делаем замену

min=x1

n_min=i

(Таким образом, при выполнении п.2 мы значения всех остальных элементов сравним с min и в случае нахождения меньшего значения, делаем замену).

Замечание. Подобным образом работает и алгоритм нахождения максимального (наибольшего) значения – max и его порядкового номера – n_max. Но в этом случае проверяемое в п.2 условие нужно записать так:

xi>max.