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

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

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

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

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

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

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

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

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]);


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



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