Базовые алгоритмы обработки массивов
Кроме рассмотренных выше операций ввода (заполнения) и вывода (визуализации) элементов массива часто выполняют суммирование, нахождение произведения, поиск элементов массива, удовлетворяющих некоторым условиям. Каждое из перечисленных действий предусматривает использование циклических конструкций.
Вычисление суммы и произведения элементов массива.При нахождении суммы:
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.