Основы алгоритмизации: Практическое пособие к контрольным работам по курсу «Информатика», страница 5

          Оформим указанные действия в виде графической схемы (рис.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

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

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

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

min=x1

n_min=i

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

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

xi>max.

5.3.4. Алгоритм перестановки

Очень часто возникает задача перестановки найденного минимального x(n_min) или  максимального x(n_max) элемента с другим элементом того же массива, номер которого задан x(n_sad).

           Описание алгоритма перестановки будем иллюстрировать простым примером: имеются стакан с водой и стакан с молоком; нужно поменять содержимое стаканов (рис.5.7). Ясно, что для этого понадобиться третий, пустой стакан.