Базовые алгоритмы обработки массивов

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

Вычисление суммы и произведения элементов массива.При нахождении суммы:

1) переменной суммирования S присваивается начальное значение, равное нулю;

2) при первом выполнении тела цикла к текущему значению переменной суммирования S прибавляется первое слагаемое суммы, и результат присваивается переменной суммирования S, т. е.

S:=S+<слагаемое>;

3) при каждом следующем выполнении тела цикла производится аналогичное действие.

Данный алгоритм при вычислении суммы элементов одномерного массива D размера n реализуется в виде следующего кода:

S:=0; {начальное значение суммы}

fori:=1tondoS:=S+D[i]; {вычисление суммы}

writeln('S=',S); {вывод суммы}

Для программирования нахождения произведения:

1) переменной произведения P присваивается начальное значение, равное единице;

2) при первом выполнении тела цикла текущее значение переменной произведения P умножается на первый сомножитель произведения, и результат присваивается переменной произведения P, т. е.

P:=P*<множитель>;

3) при каждом следующем выполнении тела цикла производится аналогичное действие.

Данный алгоритм при вычислении произведения значений элементов одномерного массива D размера n реализуется в виде следующего кода:

P:=1; {начальное значение произведения}

fori:=1tondoP:=P*D[i]; {вычисление произведения}

writeln('P=',P); {вывод произведения}

Более сложный код применяется для вычисления произведения элементов двумерного массива W размером n × m:

P:=1; {начальное значение произведения}

fori:=1ton do

forj:=1tomdoP:=P*W[i,j]; { вычисление произведения}

writeln('P=',P); {вывод произведения}

Поиск максимального и минимального элементов массива. При нахождении минимального элемента массива:

1) скалярной переменной минимума, предназначенной для хранения максимального значения, присваивается значение первого элемента массива, выступающего в качестве начального приближения или гипотезы;

2) в цикле текущее значение переменной сравнивается с каждым элементом массива и переопределяется, если рассматриваемый элемент массива меньше текущего значения переменной минимума.

Код, реализующий данный алгоритм для одномерного массива D, состоящего из n элементов, имеет вид:

min:=D[1]; {первый элемент массива назначается минимальным}

fori:=2tondo

ifD[i]<minthenmin:=D[i];

{текущий минимальный элемент сравнивается с каждым элементом

массива и переопределяется при выполнении условия}

writeln('min=',min); {вывод минимального элемента}

При нахождении максимального элемента массива:

1) скалярной переменной максимума, предназначенной для хранения максимального значения, присваивается значение первого элемента массива;

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

Программный код, реализующий данный алгоритм для одномерного массива D, состоящего из n элементов, имеет вид:

max:=D[1]; {первый элемент массива назначается минимальным}

fori:=2tondo

ifD[i]>maxthenmax:=D[i]; {текущий максимальный элемент сравнивается с каждым элементом массива и переопределяется при выполнении условия}

writeln('max=',max); {вывод максимального элемента}

Максимальный элемент двумерного массива W, состоящего из n × m элементов, определяется с использованием вложенного цикла:

max:=W[1, 1];{первый элемент массива назначается максимальным}

fori:=1ton do

forj:=1tomdo

ifW[i, j]>maxthenmax:=W[i, j]; {текущий максимальный элемент сравнивается с каждым элементом массива и переопределяется при выполнении условия}

writeln('max=',max); {вывод максимального элемента}

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

1) переменной-счетчику k присвоить начальное значение, равное нулю (k:=0);

2) в цикле вычислить значение логического выражения. Если это значение равно True, увеличить значение счетчика на единицу, т. е. выполнить оператор k:=k+1 или inc(k).

Данный алгоритм реализуется кодом

k:=0;

if<условие>thenk:=k+1;

где <условие> − условие, которому должны соответствовать элементы массива.

Программа, определяющая количество элементов одномерного массива, модуль которых не превосходит числа 3, представлена ниже.

Programcount1;

Var

D:array[1..10]ofinteger;

{описание одномерного массива из десяти целых чисел}

i, k: integer;

Begin

fori:=1to10doreadln(D[i]);

{ввод десяти элементов одномерного массива}

k:=0; {начальное значение счетчика}

fori:=1to10 do

ifabs(D[i])<=3thenk:=k+1;

{значение счетчика увеличивается на единицу при выполнении условия}

writeln('k=',k);

{количество элементов, соответствующих условию}

End.

Наши рекомендации