Программная обработка структурных типов.
Организация информации в виде массивов.
Под массивом понимается упорядоченная совокупность однотипных элементов, расположенных в оперативной памяти. Все элементы массива имеют одно имя. Обращение к элементам массива осуществляется с помощью индексов. Индексы могут задаваться в виде констант, переменных или арифметических выражений. Каждому элементу массива ставится в соответствие один или несколько индексов. Если указывается несколько индексов, то индексы разделяются запятой.
Например:
A[1] := 1;
B [I, J] := A [J];
C[J+1] := W;
Если для обращения к элементу массива используется один индекс, то массив называется одномерным массивом. Если используется два индекса, то массив называется двумерным массивом.
Тип массива может быть определен в разделе Type. При задании типа массива определен диапазон значений и тип элементов массива. Диапазон значений индекса содержит минимальное и максимальное значения индекса, разделенные двумя точками. Границы диапазона задаются в виде целочисленных констант. Использование переменных для задания границ диапазона не допускается. Допускается задание отрицательного значения индекса. Например:
Type
TA2 = Array [1..40, 1..40] Of Integer;
TA1 = Array [-3..20] Of Real;
Для выделения оперативной памяти для элементов массива требуется задать описание массива в разделе “Var”. Описание массива выполняется в соответствии со следующим синтаксисом:
<Список имен массивов>: <тип>;
Для задания типа может быть использовано описание типа, определенное в разделе “Type”.
Например,
Var
A,B:TA2;
C,D: Array [1..30] Of Real;
S: Array[1..50] Of String;
В процессе обработки можно использовать значения индекса, не выходящие за границы диапазона.
При использовании консольного режима, поступление информации в массив, обеспечивается при помощи команды Read. Например,
Read (A[I]);
Пример.
Программный код, обеспечивающий определение наиболее часто встречающегося элемента в одномерном массиве.
Program MaxFreq;
{$APPTYPE CONSOLE}
Uses
SysUtils;
Type
TA1= Array[1..30] Of Integer;
Var
A:TA1;
I,J,N,Max,Q,Amax:Integer;
begin
Writeln('Input N');
Readln (N);
Writeln('Input array');
For I:= 1 To N Do
Read( A[I]);
Max:= - MaxInt;
For I:=1 To N Do
Begin
Q:=0;
For J:= 1 To N Do
If A[I] = A[J] Then Q:=Q+1;
If Q>Max Then
Begin
Max:=Q;
Amax:=A[I];
End;
End;
Writeln (Amax);
{ Фиктивная команда ввода.
Задается любое число}
Readln;
Readln;
End.