Книга: Одномерные массивы
Рисунок 2.8 Графическая схема и программа примера 2.3
2.5 Подсчет количества элементов массива, удовлетворяющих заданному условию
Подсчет количества элементов массива, удовлетворяющих заданному условию, производится по алгоритмам, аналогичным вычислению суммы. Отличие заключается в том, что вместо добавления элемента массива к сумме, переменная – счетчик (k ) увеличивается на единицу (k=k+1 ). Таким образом, если в графических схемах алгоритмов, рисунок 2.5–2.7, вместо s=0 и s=s+ai записать k=0 и k=k+1 , то получим алгоритмы подсчета количества элементов массива.
Пример 2.4.
В одномерном массиве a размерностью n , вычислить количество элементов равных заданному числу B и стоящих на четных местах.
Решение.
Графическая схема алгоритма решения задачи и фрагмент программы изображена на рисунке. 2.9.
/* с помощью цикла for */ k=0; for(i=1;i<n;i+=2) if(a[i]==b ) k++; // или k=k+1; /* с помощью цикла while */ k=0; i=1; while (i<n) { if(a[i]==b) k++; i=i+2; } |
Рисунок 2.9 Графическая схема и программа для примера 2.4
Следующий пример показывает, как в одном алгоритме находить сумму и количество элементов, удовлетворяющих заданному условию.
Пример 2.5.
В одномерном массиве a размерностью n , вычислить среднее арифметическое положительных элементов второй половины массива, стоящих на нечетных местах.
Решение
Среднее арифметическое чисел (sr ) – частное от деления их суммы (s ) на их количество (k ): sr=s/k , где k≠0 . Таким образом, задача сводится к нахождению суммы и количества положительных элементов второй половины массива, стоящих на нечетных местах. Для решения данной задачи применим алгоритм, приведенный на рисунке 2.7, в соответствии с которым можно найти сумму и количество части элементов массива (второй половины), удовлетворяющих заданному условию (положительных элементов).
Определим номер in того элемента, с которого будем просматривать элементы второй половины массива. Поскольку по условию задачи обрабатываются элементы стоящие на нечетных местах то начальное значение in тоже должно быть четным (поскольку нумерация элементов массива начинается с нуля). Значение переменной in можно определить по формуле (2.3) где пара квадратных скобок [ ] определяет операцию вычисления целой части числа:
(2.3)
Значение ik совпадает с n , поскольку массив надо просматривать до конца. Параметр цикла i (номер элемента массива) необходимо изменять с шагом 2, чтобы обеспечить четные значения индекса (значения номеров элементов массива), т.е. i=i+2 . Вычисление суммы и количества будем вычислять в одном цикле по параметру i , что значительно сократит алгоритм.
При вычислении среднего арифметического sr=s/k необходимо избежать возможного деления на ноль, поскольку если во второй половине массива на нечетных местах не окажется положительных элементов то k будет равным нулю. Например, для массива X ={2, 0, –6, 7, 9, 0, –14, –5, 0, –4, –32}; n=11 ; in=[n/2]+1=6 , в цикле по i будут просматриваться только выделенные элементы, а среди них нет положительных чисел, поэтому переменная k останется равной нулю. В графической схеме (рисунок 2.10) для этой цели используется ветвление, в котором проверяется условие k=0 . Если это условие выполнено, то выводится сообщение о том, что среднее значение не может быть вычислено, в противном случае вычисляется и выводится значение sr .
В приведенном ниже фрагменте программы четность [n/2 ] определяется по остатку от деления n на 2 с помощью операции % – определения остатка целочисленного деления (примечание: результат операции целочисленный, т.к. n и 2 – целочисленные операнды).
Используемые переменные: n – число элементов массива; a[] – статический массив; in – первый четный номер второй половины массива; К-во Просмотров: 1169
Бесплатно скачать Книга: Одномерные массивы
|