Массивы
- структурированный тип данных с элементами одного типа. Количество
элементов определяет размер массива. Например, массив составляют
заработные платы сотрудников подразделения предприятия, здесь число
элементов равно числу сотрудников; массив образуют набор чисел, их
количество равно числу элементов массива. Номер элемента массива
называется его индексом. Массив может иметь не один, а большее число
индексов. Число индексов называется размерностью массива, например,
массив с двумя индексами называется двумерным массивом. Таким двумерным
массивом является, в частности, матрица системы n линейных
алгебраических уравнений с n неизвестными. В то же время столбец
свободных членов этой системы является одномерным массивом.
Массив должен быть описан либо в разделе переменных VAR, либо в разделе типов TYPE следующим образом:
TYPE <имя_типа> = ARRAY [ti,t2....,tn] OF <тип_элементов_массива>;
VAR <имя_массива> : <имя_типа> ;
или
VAR<имя_массива>: ARRAY [ti,t2,...,tn]OF<тип_элементов_массива>;
где tl,...,tn - тип индекса (перечислимый или интервальный);
Например:
1) VAR a: ARRAY [1..5] OF real;
Описан массив а действительных чисел, который состоит из 5 элементов.
2) TYPE t = ARRAY[1..3,1..4] OF integer;
VAR b : t;
Описана матрица b из 3 строк и 4 столбцов, элементы которой являются целыми числами.
3) TYPE
tl = ARRAY [1..4] OF integer;
t = ARRAY [1..5] OF t1;
VAR d : t;
к : t1;
В
начале описан тип одной строки t1, затем тип всей матрицы t через тип
строки t1. В разделе переменных указано ,что d-двумерный массив размером
(5,4), a k - одномерный массив k(4).
Пример обработки одномерного массива
Дан одномерный массив MAS(12) из вещественных чисел. Найти наибольший элемент массива и его индекс.
program pr4_1 ;
const n = 12; (*константа n определяет размер массива в описании*)
type
m = array [1..n] of real ; (* m – тип массива mas *)
var mas : m ;
i , num : integer;
max : real;
begin
for i:=1 to n do (*ввод элементов массива mas по 1 в строке*)
begin
writeln(‘введите элемент массива’, i) ;
read (mas[i]);
end;
num :=1; max := mas [1];
for i: =2 to n do
if mas [ i ] > max then begin
max := mas [i ]; num := i ;
end;
writeln; (* вывод массива в строку*)
for i:=1 to n do write (mas [ i ]:5:1 ); writeln;
writeln (‘максимальный элемент = ‘, max:4:1,‘ его индекс=’ ,num );
readln;
end.
Переменная
max сравнивается с элементами массива, и если элемент массива больше
max, то переменной max присваивается значение элемента массива, а
переменной num - индекс этого элемента. По окончании цикла переменная
max будет иметь значение, равное максимальному элементу массива, а
переменная num - значение индекса этого элемента.
Пример обработки многомерного массива
Как
правило, при обработке многомерных массивов используются вложенные
циклы, т.е. цикл по столбцам располагается внутри цикла по строкам.
Дана матрица A(3,4), и вектор B (4), состоящие из целых чисел . Умножить матрицу А на вектор В .
program pr4-2 ;
const m=3; n=4;
var
a : array [ 1 .. m, 1 .. n ] of integer; (* описание матрицы *)
b : array [ 1 .. n ] of integer; (* описание вектора *)
c : array [ 1 .. m ] of integer; ( * описание С *)
i, j: integer;
begin
for i:=1 to m do (* ввод матрицы *)
begin
writeln (‘введите элементы ‘, i , ‘-той строки’);
for j:=1 to n do read (a [i, j] ); writeln;
end;
writeln (‘введите элементы вектора’);
for j:=1 to n do (* ввод вектора *)
read (b[ j]); writeln;
for i:=1 to m do
begin
c [ i ]:=0; for j:=1 to n do c[i] := c[ i ]+ a[i , j]* b[j];
end;
for i:=1 to m do (*форматный вывод матрицы *)
begin
for j:=1 to n do write (a [i, j]: 4 ); writeln;
end;
for j:=1 to n do write (b [ j ] :4); (* вывод массива B *)
writeln ;
for i:=1 to m do write (c [ i ] :4); (* вывод массива С *)
readln;
end.
В
программе элементы матрицы вводятся по строкам по одному с
подтверждением клавишей Enter. А выводятся в общепринятом виде: каждая
строка матрицы с новой строки экрана (цикл i по строкам внешний, а
цикл j – внутренний)