Иногда необходимо найти сумму всех элементов, иногда − только некоторых, удовлетворяющих определенному условию. Мы рассмотрим более сложный пример.
Пример
Сформировать одномерный массив, каждый элемент которого равен сумме отрицательных элементов соответствующей строки заданной целочисленной матрицы.
Решение
Опишем одномерный массив, размерность которого равна количеству строк в двухмерном массиве.
Const n=10; m=15;
Type omyarray=Array [1..n] Of Integer;
dmyarray=Array[1..n, 1..m] Of Integer;
Var B: omyarray;
A: dmyarray;
Формировать одномерный массив по заданному правилу будем в процедуре. Ей передаются два параметра − исходный двухмерный массив и одномерный массив, который является результатом. В теле процедуры используются вложенные циклы. Внешний цикл определяет номер строки, который совпадает с номером элемента одномерного массива. Здесь же задаются начальные значения элементов одномерного массива, равные 0. Во внутреннем цикле анализируется каждый элемент выбранной строки. Если очередной элемент отрицательный, то он добавляется к сумме всех предыдущих отрицательных элементов выбранной строки матрицы.
Program Example_111;
Procedure Sum(x: dmyarray;
Var y: omyarray);
Var i, j: Integer;
Begin
For i:=1 To n Do
Begin
y[i]:=0; {Присваивание начальных
значений элементов массива суммы}
For j:=1 To m Do
{Накопление суммы отрицательных}
If x[i,j]<0 Then y[i]:=y[i]+x[i,j];
End;
End;
В основной программе после вызова процедуры Sum(А, В) остается только вывести на экран одномерный массив В, в котором записаны суммы отрицательных элементов каждой строки.