Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

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






Подсчет количества элементов массива, удовлетворяющих заданному условию




 

Подсчет количества элементов массива, удовлетворяющих заданному условию, производится по алгоритмам, аналогичным вычислению суммы. Отличие заключается в том, что вместо добавления элемента массива к сумме, переменная – счетчик (k) увеличивается на единицу (k=k+1). Таким образом, если в графических схемах алгоритмов (рис. 2.5–2.7), вместо s=0 и s=s+ai записать k=0 и k=k+1, то получим алгоритмы подсчета количества элементов массива.

Пример 5.4. В одномерном массиве a размерностью n вычислить количество элементов, равных заданному числу B и стоящих на четных местах.

Решение:

Графическая схема алгоритма решения задачи и фрагмент программы изображена на рис.6.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; }

Рис. 6.9 Графическая схема и программа для примера 5.4

 

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

Пример 5.5. В одномерном массиве a размерностью n, вычислить среднее арифметическое положительных элементов второй половины массива, стоящих на нечетных местах.

Решение:

Среднее арифметическое чисел (sr) – частное от деления их суммы (s) на их количество (k): sr=s/k, где k≠0. Таким образом, задача сводится к нахождению суммы и количества положительных элементов второй половины массива, стоящих на нечетных местах. Для решения данной задачи применим алгоритм, приведенный на рис. 5.7, в соответствии с которым можно найти сумму и количество части элементов массива (второй половины), удовлетворяющих заданному условию (положительных элементов).

Определим номер in того элемента, с которого будем просматривать элементы второй половины массива. Поскольку по условию задачи обрабатываются элементы, стоящие на нечетных местах, то начальное значение in тоже должно быть четным (поскольку нумерация элементов массива начинается с нуля). Значение переменной in можно определить по формуле (5.3), где пара квадратных скобок [ ] определяет операцию вычисления целой части числа:

(5.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 останется равной нулю. В графической схеме (рис. 6.10) для этой цели используется ветвление, в котором проверяется условие k=0. Если это условие выполнено, то выводится сообщение о том, что среднее значение не может быть вычислено, в противном случае вычисляется и выводится значение sr.



В приведенном ниже фрагменте программы четность [n/2] определяется по остатку от деления n на 2 с помощью операции % – определения остатка целочисленного деления (примечание: результат операции целочисленный, т.к. n и 2 – целочисленные операнды).

 

Используемые переменные: n – число элементов массива; a[] – статический массив; in – первый четный номер второй половины массива; s – сумма элементов массива удовлетворяющих условию; k – количество элементов массива, удовлетворяющих условию; sr – среднее значение элементов массива, удовлетворяющих условию; i – параметр цикла;   #include <stdio.h> int main() { float a[200]; int n, i , in, k; float s, sr;   puts("Введите число элементов массива a"); scanf("%d",&n);   for (i=0;i<n;i++) { printf("Введите число a[%2d]=",i); scanf("%f",&a[i]); }     if ((n/2)%2==0) in=n/2; else in=n/2+1;   s=0; k=0; for(i=in;i<n;i+=2) if(a[i]>0) { s+=a[i]; k++;}   puts("Массив a"); for(i=0;i<n;i++) printf("a[%2d]=%6.2f \n", i, a[i]);   if (k==0) puts("Среднее арифметическое вычислить нельзя!"); else { sr=s/k; printf("Среднее ариф. полож. элементов на нечетных. местах второй полов. массива =%6.3f\n", sr); } return(0); }  

Рис. 6.10 Графическая схема и программа для примера 5.5



 


mylektsii.ru - Мои Лекции - 2015-2018 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал