Работа с массивами

Поскольку все элементы массива имеют одинаковый тип, то для обработки элементов используют циклические алгоритмы. Наиболее часто применяется цикл с параметром. При этом параметр цикла используется в качестве индекса элемента массива. Порядок вложенности циклов зависит от порядка массива, так для одномерного массива используется один цикл, для двумерного - два, вложенные один в другой и т. д.

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

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

Инициализация массивов (присвоение начальных значений всем компонентам массивов) осуществляется двумя способами. Первый способ - с использованием типизированных констант, например:

Type

Mass= Array[1..10] of Real;
const
K: Mass= (0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3);

 

 

При инициализации двумерных массивов значения компонент каждого из входящих в него одномерных массивов записывается в скобках:

Type

Mass3x2 = Array[1..3,1..2] of Integer;

const
L: Mass3x2 = ( (1, 2) (3, 4) (5, 6) );

Ввод элементов одномерного массива с клавиатуры:

Var

A : array [1..10] of Integer;

begin
For i:=1 to 10 do
begin
Edit1.Text := Edit1.Text + IntToStr(A[i]);
end;

end;

Если необходимо инициализировать массив случайными значениями, то используют генератор случайных чисел.

Randomize;
For i:=1 to 10 do
A[i]:=Random(100);

Процедура Randomize инициализирует встроенный генератор случайных чисел. Функция Random(100) возвращает при каждой итерации случайное число в диапазоне от 0 до значения заданного аргументом (100-1).

Пусть необходимо найти сумму элементов одномерного массива состоящего из 5 элементов.

Для решения данной задачи необходимо инициализировать нулевым значением переменную, используемую для хранения суммы. Затем необходимо заполнить массив, показать его пользователю и вывести сумму. Для решения задачи будем использовать один цикл с параметром. Ниже приведен исходный код обработчика события нажатия кнопки расчета:

procedure TForm1.Button2Click(Sender: TObject);

Var

A : array [1..5] of Integer;

S,I : Integer;

Begin

Randomize;

S:=0;

Memo1.Clear;

Memo1.Lines[0]:='Исходный массив:';

For I:=1 to 5 do

Begin

A[i] := Random(50);

Memo1.Lines[0]:=Memo1.Lines[0] + IntToStr(A[i])+' ';

S:=S+A[I];

end;

Memo1.Lines.Add('Результат суммирования... '+IntToStr(S));

end;

 

Найти сумму отрицательных элементов одномерного массива состоящего из 100 элементов целого типа, порядковый номер которых кратен трём.

Составим алгоритм и программу нахождения суммы элементов одномерного массива.

Для ввода элементов массива используем генератор случайных чисел. В теле цикла введём логический блок решения для определения заданного условия при обработке элементов массива.

Ниже приведена программа решения задачи.

var
A:array [1..100] of Integer;
S,I:Integer;
Begin
Randomize;
S:=0;
For I:=1 to 100 do
begin
A[I]:=Random(100) - Random(50);
if (I mod 3=0) and (A[I]<0) then S:=S+A[I]
end;
Label1.Caption := 'Результат суммирования... '+IntToStr(S);
End;

Нахождение произведения элементов сводится к инициализации единицей переменной, предназначенной для хранения произведения. В теле цикла перебирают элементы массива, сравнивая, в случае необходимости с заданным условием и умножают эту переменную на выбранный элемент массива.

 

Найти произведение положительных элементов одномерного массива состоящего из 100 элементов целого типа.

 

Составим алгоритм и программу нахождения произведения элементов одномерного массива.

 

Инициализируем переменную, предназначенную для хранения произведения. Для ввода элементов массива используем генератор случайных чисел. В теле цикла введём логический блок решения для определения заданного условия при обработке элементов массива.

 

Ниже приведена программа решения задачи.

 

Var

A:array [1..10] of Integer;

P,I:integer;

Begin

Randomize;

P:=1;

For I:=1 to 10 do

Begin

A[I]:=Random(100) - Random(50);

If A[I]>0 then P:=P*A[I];

end;

Label1.Caption := 'Результат произведения... '+IntToStr(P);

End;

 

Дан двумерный массив, состоящий из элементов целого типа. Размерность массива 10x10. Найти среднее значение элементов главной диагонали.

Для определения элемента, лежащего на главной диагонали, вспомним, что у него номер строки равен номеру столбца.

var
A:array [1..10,1..10] of Integer;
I,J,Count:Integer; // в переменной Count храним количество элементов

Sum: Integer; // главной диагонали, а в Sum – сумму этих элементов

Srednee: Real;
Begin
Randomize;

Sum:=0;

Count:=0;
For I:=1 to 10 do
For J:=1 to 10 do
begin
A[I, J]:=Random(100) - Random(50);
If I=J then

Begin

Sum:=Sum+A[I, J];

Count:=count+1; // увеличивает счетчик количества элементов гл.диаг

End;

End;
Srednee := Sum/Count;

Label1.Caption:= 'Среднее значение гл.диагонали... '+FloatToStr(Srednee);
End;