Объединим алгоритмы ввода – вывода массива (рисунок 2.2) и вычисления суммы (рисунок 2.7). Для сокращения записи графической схемы алгоритма ввода и вывода массива, здесь и в дальнейшем используем простые блоки вида:
В алгоритме для вычисления искомой суммы рассматриваются только те элементы, которые в массиве стоят на местах, кратных трем, при этом необходимо учитывать что нумерация элементов массива в С начинается с нуля т.е. элемент массива с индексом a[0] это первый элемент массива. Таким образом, элементы стоящие на местах кратных трем – а2, а5, а8, …, индекс элемента массива (он же – параметр цикла) должен последовательно принимать значения 2, 5, 8, …, т.е. изменяться от 2 с шагом 3, что и достигается изменениями в блоках 2 и 6 алгоритма вычисления суммы (рисунок 2.7). Так в блоке 2 запишем i=2, в блоке 3 (i<n), а в блоке 6 – (step=3) i=i+3. Для суммирования из рассмотренных элементов только тех, которые меньше заданного В, используется ветвление с условием аi<В (блок 4). Окончательный алгоритм вычисления суммы заданных элементов примет, следующий вид (рисунок 2.8). В задаче будем использовать динамический способ задания массива. В данном примере для обращения к элементам массива используются указатели. Как уже отмечалось в разделе 1.1, имя массива является указателем на его первый элемент.
Используемые переменные:
n – число элементов массива;a[] – динамический массив;s – сумма элементов массива;B – заданное число;i – параметр цикла;
#include <stdio.h>
main()
{
int n,i;
float s, B;
puts("Введите число элементов массива a");
scanf("%d",&n);
float *a=new float[n];
for (i=0;i<n;i++)
{ printf("Введите число a[%2d]=",i);
scanf("%f",a+i);
}
puts("Введите B");
scanf("%f",&B);
s=0;
for(i=2;i<n;i+=3)
if(*(a+i)<B) s+=*(a+i);
puts("Массив a");
for(i=0;i<n;i++)
printf("%.1f ",*(a+i));
printf("\n");
printf("Сумма чисел, меньших %.1f, стоящих на местах, кратных 3, равна %.2f\n",B,s);
delete[] a; // освобождение памяти
return(0);
}
Рисунок 2.8 Графическая схема и программа примера 2.3
12.3.5. Подсчет количества элементов массива, удовлетворяющих заданному условию
Подсчет количества элементов массива, удовлетворяющих заданному условию, производится по алгоритмам, аналогичным вычислению суммы. Отличие заключается в том, что вместо добавления элемента массива к сумме, переменная – счетчик (k) увеличивается на единицу (k=k+1). Таким образом, если в графических схемах алгоритмов, рисунок 2.5–2.7, вместо s=0 и s=s+ai записать k=0 и k=k+1, то получим алгоритмы подсчета количества элементов массива.
Пример 2.4.
В одномерном массиве a размерностью n, вычислить количество элементов равных заданному числу B и стоящих на четных местах.