Действия над массивом как единым целым. Такие действия допустимы лишь в двух случаях:
§ присваивание значений одного массива другому;
§ операции отношения «равно», «не равно».
В обоих случаях массивы должны иметь одинаковые типы (тип индексов и тип элементов). Пример:
var P, Q: Array[1..5, 1..10] Of Real;
При выполнении операции присваивания P := Q все элементы массива P станут равны соответствующим элементам массива Q.
В многомерных массивах переменная с индексом может обозначать целый массив. Например, если в таблице H требуется, чтобы данные за 1989 г. были такими же, как за 1981 г. (девятой строке присвоить значение первой строки), то это можно делать так:
Н[1989] := Н[1981];
А если нужно поменять местами значения этих строк, то это делается через третью переменную того же типа:
Р := Н[1989];Н[1989] := Н[1981];Н[1981] := Р;
где P описана так:
var P: Array[1..12] Of Real;
Обработка массивов в программах производится покомпонентно. Для обработки массивов чаще всего используются итерационные алгоритмы. При обработке многомерных массивов, в большинстве случаев, требуется применение нескольких вложенных циклов, количество которых определяется размерностью массива. Вот примеры ввода значений в массивы:
//Ввод массива как константы (Pascal)Const mas : array [1..5] of byte = (1,3,5,7,9);begin //Ввод одномерного массиваfor I := 1 to 12 do readln(T[I]);//Ввод двумерного массива //Здесь каждое следующее значение будет вводиться с новой строки//Для построчного ввода используется оператор read. for I := 1 to IMax do for J := 1 to JMax do readln(Mas[I,J]); //C помощью генератора случайных чисел: Randomize; For i:=1 to n do A[i]:=random (10); - значение A[i] в пределах от 0 до 9;{A[i]:=random; - значение A[i] в пределах от 0 до 1;A[i]:=random (10) – 6; - положительное или отрицательное значение A[i];A[i]:=random (10) /n; - вещественное значение A[i];}End.
Вычисление элементов массива:
For i:=1 to n doA[i] = 2*i+10;
Аналогично в цикле по индексной переменной организуется вывод значений массива. Например:
for I := 1 tо 12 do write(T[I]:8:4);
Следующий фрагмент программы организует построчный вывод матрицы на экран:
for I := 1 to IMax dobegin for J := l to JMax do write(Mas[I, J]:6); writeln;end;
После печати очередной строки матрицы оператор writeln без параметров переведет курсор в начало новой строки. Следует заметить, что в последнем примере матрица на экране будет получена в естественной форме прямоугольной таблицы, если JMax не превышает 12.
Поиск максимального или минимального элемента:
Var min, max, i, n, imin, imax:integer; Begin … max:=A[1]; For i:=2 to n do if A[i]> max then begin max:=A[i]; imax:=i; end; min:=A[1]; For i:=2 to n do if A[i]< min then begin min:=A[i]; imin:=i; end;end.
Пример: Найти среднее арифметическое всех элементов вещественного массива.
Program massiv;Var A: array [1..100] of real; i, n:integer; sred:real;Begin Write(‘Input n ’); Readln (n); Randomize; For i:=1 to n do begin A[i]:=random (100)/3; sred:=sred+A[i]; end; For i:=1 to n do Write (A[i]:8:2); Writeln; sred:=sred/n; Writeln (‘sred = ‘, sred:5:2);End.