double arrow

ТЕМА. Работа с массивами


Массив — упорядоченный набор однотипных значений — компонент массива. Тип компонент называется базовым типом массива.

В Паскале массив рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое, так и на любую из его компонент.

Переменная с индексом — идентификатор компоненты массива.

Формат записи:

<имя массива>[<индекс>],

где индекс может быть выражением порядкового типа.

Описание массива определяет имя, размер массива и базовый тип. Формат описания в разделе переменных:

Var <имя массива> : array [<тип индекса>] of <базовый тип>

Чаще всего в качестве типа индекса используется интервальный целый тип.

Линейный (одномерный) массив — массив, у которого элементы — простые переменные. В одномерных массивах хранятся значения линейных таблиц.

Примеры описания одномерных массивов:

Var В : array [0. .5] of real;

R : array [1. . 34] of char;

N : array ['A' . . ' Z' ] of integer;

Ввод и вывод массива производится поэлементно. Обычно для этого используется цикл с параметром, где в качестве параметра применяется индексная переменная.

Пример 1. В программе вводится десять значений целочисленного массива А и выводятся значения вещественного массива В, содержащего 50 элементов. Соответствующие фрагменты программы:

Var А : array [1. .10] of integer;

В : array [1. .50] of real;

i : integer;

begin

for i : = 1 to 10 do

begin

write ('A[', i, ']=') ;

readln (A[i] )

end;

for i: = 1 to 50 do

begin

writeln('В[' ,i,']=', В[i])

end;

end.

Пример 2. Заполнить случайными числами из диапазона [0,1] вещественный линейный массив из N чисел. Найти максимальное значение и его индекс (первый, если таких значений несколько).

Решение. Поскольку размер массива в программе должен быть однозначно задан, определим N в разделе констант, например, N=20. При изменении размера массива достаточно будет отредактировать в программе лишь описание константы N.

Const N=20;

Var X : array [1:N] of real;

k: integer;

max: real;

Kmax: integer;

Begin

{Заполнение случайными .числами}

for k:=1 to N do X[k]: =random;

max := X [1] ;

Kmax : =1; {Инициализация вычисляемых переменных}

for k: =2 to N do {Поиск максимального значения}

if X [k] > max then

begin

max: =X [k] ;

Kmax := k;

end;

writeln ('Первое максимальное значение: X[',Kmax,'] =',max)

end.

Пример 3. Дан целочисленный линейный массив. Отсортировать его элементы в порядке возрастания значений.

Решение. Воспользуемся алгоритмом, известным под названием «метод пузырька». Идея состоит в последовательном перемещении путем попарных перестановок наибольшего значения сначала на место N-гo элемента, затем N-1 -го и т.д.

Опишем массив на максимальный размер (например, 100), а фактический размер N определим вводом.

Program Sortirovka;

Var N, I, J, Р : integer;

A array [ 1. . 100] of integer;

begin

write('Введите число элементов: ' ) ;




readln(N);

for I: = 1 to N do

begin

write ('Введите A[' , I, '] ');

readln (A [I]);

end;

for I:=l to N-1 do

begin for J: =1 to N-I do

if A[J] <=A[J+1] then

begin

P:=A[J];

A[J] :=A[J+l];

A[J+1]:=P;

end

end ;

for I :=1 to N do

write (A[I] , ' ');

end.

Тестовый пример: N = 10; {количество элементов в массиве Ai}

элементы массива Ai: [1, 2, 2, 2, -1, 1, 0, 34, 3, 3]

результаты выводятся в массив с именем Ai: [-1, 0, 1, 1, 2, 2, 2, 3, 3, 34]

Пример вывода результатов в файловую переменную: Для этого необходимо в блоке описания описать файловую переменную: f:Text;

В теле программы, которая начинается с операторных скобок Begin…End

....

begin

assign(F,d:\mus\alg10.txt); {путь к файлу, где будут находиться результирующие данные}

rewrite(f); {оператор открытия файловой переменной}

writeln(f,’aaa’); {оператор вывода в файловую переменную с именем f}

Close(f) {оператор закрытия файловой переменной};

....

End.

Пример вывода результатов программы Sortirovka в файловую переменную:

for I :=1 to N do

writeln (f,A[I]);

Заказать ✍️ написание учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Сейчас читают про: