Общие сведения. Массив – это упорядоченная совокупность значений одинакового типа, объединенная одним именем
Массив – это упорядоченная совокупность значений одинакового типа, объединенная одним именем. Для того, чтобы иметь возможность работать с каждым элементом массива, необходимо задать координаты этого элементам в общей структуре массива.
Если массив одномерный рис. 1 а, б, то для определения положения элемента достаточно задания номера ячейки. Выделенные ячейки имеют номера 3, 5, 7, а соответствующие элементы массива, если массив в целом обозначить буквой А, обозначаются соответственно как A[3], A[5], A[7]. Одномерные массивы часто называют векторами.
Если массив двумерный, то для определения положения какого-либо элемента достаточно задания номера строки и столбца, на пересечении которых находиться рассматриваемый элемент. Так выделенные на рис. 1 в элементы массива имеют следующие обозначения B[1,1], B[1,4], B[5,2].
1 2 3 4 5 6 7 8
а)
1 2 3 4
- вектор столбец 5
двумерный массив
в)
б)
Рис.1
Причём первым в обозначении элемента массива стоит номер строки, а вторым - столбца.
Точно также задается положение трёх, четырёх и n-мерных массивов.
Итак, массив характеризуется размерностью и длиной по направлению каждой из размерностей.
Если массив состоит из одного столбца или одной строки и состоит из пяти символов, то говорят, что массив одномерный длиной в 5 элементов.
Если массив представляет собой таблицу из 4 строк и 5 столбцов, то говорят, что массив двумерный длиной 4 ´ 5.
Точно также оговариваются характеристики любого n - мерного массива.
Если какая-либо переменная в программе является массивом, то её необходимо описать в разделе переменных. Простейшая форма описания одномерного массива имеет вид:
Var v: array [n...m] of t ;
где v – имя массива, формируется по правилам задания имён переменных;
n и m – наибольшее и наименьшее значение индекса массива, может быть целого и перечисляемого типа;
t – тип элемента массива, может быть любым типом,существующим в Паскале.
Например, запись: var m: array [1..8] of real
говорит о том, что в программе, в которой имеется данное описание, будет обрабатываться одномерный массив, состоящий из 8 элементов вещественного типа.
В описании массивов большей размерности предел изменения этой размерности отделяется друг от друга запятой.
Запись
Var C: array [1..5, 1..4] of integer
означает, что в программе имеется целочисленный массив С, состоящий из пяти строк и четырёх столбцов.
Для описания многомерных массивов в Паскале существует целый ряд способов. Следующие группы операторов задают описание одного и того же двумерного массива А, представляющего собой таблицу размером 2´3 (2 строки, 3 столбца)
Первый способ:
Type
Stroka = array [1..3] of real;
Matr = array [1..2] of stroka;
Var
V: stroka;
A: matr ;
Второй способ:
Type
Matr= array [1..2] of array [1..3] of real;
Var
A: matr;
Третий способ:
Type
Matr = array [1..2,1..3] of real;
Var
A: matr;
Четвёртый способ:
Var
A: array [1..2,1..3] of real;
В первом способе описания переменная V объявлена как одномерный массив из трёх элементов вещественного типа. Переменная А имеет смысл двумерного массива из двух строк, в каждую из которых включено по три элемента.
Второй, третий и четвертый способы описания массива получаются из первого путем его последовательного упрощения. Так второй способ описания получен из первого путём исключения определения типа stroka в определении типа matr.
В Паскале типом индекса (номером) элемента массива не обязательно является целое число. Им может быть также переменная перечисляемого типа, например:
Type
Fam =(ivanov, socolov, andreev);
Var
Ball: array [fam] of real ;
Последняя запись даёт описание вещественного массива, состоящего из трёх элементов, но порядковыми «номерами» элементов массива являются переменные перечисляемого типа Ivanov, Socolov, Andreev.
Задание значений элементам массива может выполняться при помощи операторов присваивания:
A [I] := A[2] + 2.6E2
A [1, 2] := 2.3 + P1
Другим способом задания значений элементам массива является поэлементный ввод. Также поэлементно может осуществляться и вывод.
Ниже рассматривается ввод и вывод одномерного массива А, состоящего из пяти элементов.
Program VV;
Var
A: array [1..5] of real ;
I: integer;
Begin
For i:=1 to 5 do
Read(A[i]);
For i:=1 to 5 do
Write(A[i])
End.
В процессе ввода элементы массива должны отделяться друг от друга пробелами.
Следующая программа реализует ввод и вывод двумерного массива А (3´4). Причем ввод организован в виде матрицы по строкам:
Program WVA;
Var
A: array[1..3,1..4] of real;
I, j: integer;
Begin
For i:=1 to 3 do
For j:=1 to 4 do
Read(A[i,j]);
For i:=1 to 3 do
Begin
For j:=1 to 4 do
Write(A[i,j]);
Writeln;
End
End.
Рассмотрим пример программы с использованием массивов.
Пример 1: Составить программу для вычисления средних значений элементов списков А, В, С, содержащих по 50 чисел каждый. Результат получить в виде массива “Д”.
Program Mas;
Const
NM=50;
Var
I: integer;
A,B,C,D: array [1..NM] of real;
Begin
For i:=1 to NM do
Begin
Read(A[I],B[I],C[I]);
D[I]:= (A[I]+B[i]+C[I])/3;
Write (D[I])
End
End.
Пример 2: Записать +1 вместо максимального элемента массива А(5´4), а –1 вместо минимального.
Program Maxmin;
Var A: array[1..5,1..4] of real;
N,M,N1,M1,I,J : integer;
Min, Max: real;
Begin
For i:=1 to5 do
For j:=1 to 4 do
Read (A[i,j]);
Max:=A[1,1];
Min:=A[1,1];
N:=1; M:=1;
N1:=1; M1:=1;
For i:=1 to 5 do
For j:=1 to 4 do
Begin
If A[i,j]>max then
Begin
Max:=A[i,j];
N:=i; M:=j
End;
If A[i,j]<min then
Begin
Min:=A[i.j];
N1:=i; M1:=j
End
End;
A[N,M]:=1;
A[N1,M1]:=-1;
Writeln(A[N,M],A[N1,M1])
End.
Пример 3: Упорядочить по возрастанию все элементы главной диагонали матрицы А(5´5).
Program YP;
Var
A: array [1..5,1..5] of real ;
S : real ;
I, j : integer ;
Begin
For j:=1 to 5 do
Read(A[i,j]);
For i:=1 to 4 do
For j:=1 to 5 do
If A[j,j]> A[j+1,j+1] then
Begin
S:=A[j,j];
A{j,j]:=A[j+1,j+1];
A[j+1,j+1]:=S;
End;
For i:=1 to 5 do
Writeln(A[i,i])
End.
Дата добавления: 2015-04-05; просмотров: 958;