Книга: Одномерные массивы

Рисунок 2.6 Графическая схема и фрагмент программы вычисления суммы элементов массива стоящих на заданных местах

Например, чтобы вычислить сумму элементов, стоящих в массиве на четных местах, необходимо "заставить" i принимать значения 1, 3, 5, … (поскольку нумерация элементов массива в С начинается с нуля т.е. элемент массива с индексом a[0] – первый элемент массива). Для этого достаточно в блоке 2 записать i=1 , в блоке 3 – (i<n) , а в блоке 5 записать i=i+2 (step=2 ). В программе на языке С соответствующий фрагмент будет выглядеть следующим образом:

s=0;

for(i=1;i<n;i=i+2) // или for(i=1;i<n;i+=2)

s+=a[i]; // или s=s+a[i];

Для вычисления суммы только тех элементов, которые удовлетворяют некоторому условию , необходимо в алгоритме вычисления суммы (рисунок 2.6) блок 4 заменить на ветвление, которое обеспечивает выполнение команды s=s+ai только тогда, когда условие выполнено для рассматриваемого элемента массива ai . В этом случаи алгоритм вычисления суммы примет следующий вид (рисунок 2.7).


/* с помощью цикла for */

s=0;

for(i=in;i<ik;i+=step)

if( условие ) s+=a[i]; // или s=s+a[i];

/* с помощью цикла while */

s=0; i=in;

while (i<ik)

{

if( условие ) s+=a[i];

i=i+step;

}

Рисунок 2.7 Графическая схема и фрагмент программы вычисления суммы элементов массива стоящих на заданных местах

Применим полученный алгоритм для вычисления суммы положительных элементов массива стоящих на нечетных местах. Для этого в блоке 2 запишем i=0 , в блоке 3 (i<n) , в 4 условие – (a[i]>0 ), а в блоке 6 изменение параметра цикла (step=2 ) i=i+2 . Тогда соответствующий фрагмент программы можно записать в виде:

s=0;

for(i=0;i<n;i+=2)

if( a[i]>0 ) s+=a[i]; // или s=s+a[i];

Рассмотрим примеры использования рассмотренных алгоритмов.

Пример 2.3.

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


Решение

Объединим алгоритмы ввода – вывода массива (рисунок 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, имя массива является указателем на его первый элемент.



К-во Просмотров: 1177
Бесплатно скачать Книга: Одномерные массивы