Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
заоч_метод_2 сем.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.41 Mб
Скачать

Основные теоретические положения

Тема 2.5 Массивы

Массив- это упорядоченный ограниченный набор однотипных данных, с каждым из которых связан ряд целых чисел, называемых индексами.

Массив определяется именем (идентификатором), размером и размерностью. Имя массива является единым для всех его элементов. Размерность массива определяется количеством индексов. Индексы необходимы для указания местоположения элемента. В качестве индекса может использоваться любой порядковый тип, кроме longint. По размерности массивы бывают:

  • одномерные;

  • двумерные;

  • многомерные.

Контроль правильности значений индексов осуществляется с помощью директивы компилятора R. По умолчанию директива R находится в пассивном состоянии{$R-}.

Размер массива определяется верхними границами индексов. Число элементов массива в языке Pascal фиксируется при описании и в процессе выполнения программы не меняется.

Элементы массива могут быть любого типа, включая структурированные (массив, запись, строки символов). Тип элементов массива называется базовым. При объявлении массива резервируется область оперативной памяти для хранения элементов массива. Элементы массива располагаются в последовательно расположенных ячейках памяти друг за другом.

Одномерный массив

В одномерном массиве все элементы как бы вытянуты в одну линию и расположены по возрастанию порядковых номеров. Элемент одномерного массива – это переменная с одним индексом. Например: А[i], Mas[r+2], D[3].

Способы описания одномерного массива

1). Type имя типа = array [диапазон индекса] of тип элементов;

Var имя массива : имя типа;

2). Var имя массива : array [диапазон индекса] of тип элементов;

где, array of – «массив из» - служебные слова;

тип элементов – любой простой и структурированный;

диапазон индекса – диапазон изменения индекса.

Например: Type massiv=array[1..20] of real;

Var A:massiv;

B: array [1..9] of char;

Ввод элементов массива

Рrogram vvod;

Const N=10;

Type mas=array[1..N] of real;

Var a:mas;

i: integer:

Begin

Writeln(‘Введите элементы массива’);

For i:=1 to N do

Begin

Write(‘a[‘,i,’]=’);

Readln( a[i])

End;

End.

Пример1:

Составить программу для нахождения наибольшего элемента одномерного массива х , содержащего 15 элементов.

big=x[1]

i=1,15,1

Big<x[i]

big=x[i]

Program mas_1;

var

i:integer;

big:real;

x: array[1..15] of real;

begin

for i:=1 to 15 do

begin

write (' x [',i:2,']=');

readln(x[i]);

end;

big:=x[1];

for i:=2 to 15 do

if big <x[i] then big :=x[i];

writeln('big = ',big:7:2)

end.

Резуььтат решения задачи

x [ 1]=1

x [ 2]=2

x [ 3]=3

x [ 4]=4

x [ 5]=5

x [ 6]=4

x [ 7]=3

x [ 8]=5

x [ 9]=6

x [10]=4

x [11]=3

x [12]=5

x [13]=6

x [14]=4

x [15]=5

big= 6.00

Чтобы осуществить перестановку любых элементов массива необходимо объявить дополнительную переменную для временного хранения любого элемента массива. Переменная должна быть того же типа, что и тип элементов массива. Сортировка и сдвиг элементов относится к перестановке.

Сортировка - один из наиболее распространенных процессов современной обработки данных. Сортировкой называется распределение элементов по группам в соответствии с определенными правилами. Существуют различные способы сортировки элементов массива: метод обмена (пузырька), метод выбора, метод вставок, бинарная сортировка и др.

Сдвиги бывают арифметические и циклические. При арифметическом сдвиге часть элементов теряется, а при циклическом сдвиге элементы массива только меняют свое местоположение.

До сдвига вправо

a[1]

a[2]

a[3]

a[4]

a[5]

p

P:=a[n];

For i:=n downto 2 do

A[i]:=a[i-1];

A[1]:=P;


После сдвига вправо

a[5]

a[1]

a[2]

a[3]

a[4]


Пример2: В одномерном массиве, содержащем N элементов, осуществить циклический сдвиг элементов на 1 вправо (или влево). Для определения направления сдвига будем использовать переменную j. Если значение переменной j=0, то осуществляется циклический сдвиг элементов массива на единицу вправо, в противном случае – влево.

program pr;

type

masiv = array [1..15] of integer;

var i,key,j,n:integer;

mas:masiv;

begin

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

readln(n);

for i:=1 to n do

begin

writeln('Введите Mas[',i,']');

readln(mas[i]);

end;

writeln('Введите 0 для сдвига вправо ,или 1 -влево');

readln(j);

if (j=0) then

begin

key:=mas[n];

for i:=n downto 2 do

mas[i]:=mas[i-1];

mas[1]:=key;

end else

begin

key:=mas[1];

for i:=1 to n-1 do

mas[i]:=mas[i+1];

mas[n]:=key;

end;

write('Mas[ ');

for i:=1 to n do

write(mas[i],' ');

write(']');

end.

Введите количество элементов

5

Введите Mas[1]

1

Введите Mas[2]

2

Введите Mas[3]

3

Введите Mas[4]

4

Введите Mas[5]

5

Введите 0 для сдвига вправо , или 1 -влево

0

Mas[ 5 1 2 3 4 ]

Пример3:

Рассортировать элементы одномерного массива по возрастанию методом пузырька.

Для этого сравниваются соседние элементы массива mas[j] и mas[j+1]. Если

mas [j]>mas[j+1] , то эти элементы меняются местами через дополнительную переменную key.

program pr;

type

masiv = array [1..15] of integer;

var i,key,j,n:integer;

mas:masiv;

begin

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

readln(n);

for i:=1 to n do

begin

writeln('Введите Mas[',i,']');

readln(mas[i]);

end;

i:=1;

while i=1 do

begin

i:=0;

for j:=1 to n-1 do

if mas [j]>mas[j+1] then

begin

key:=mas[j];

mas[j]:=mas[j+1];

mas[j+1]:=key;

i:=1;

end;

end;

write('Mas[ ');

for i:=1 to n do

write(mas[i],' ');

write(']');

end.

Введите количество элементов

4

Введите Mas[1]

4

Введите Mas[2]

2

Введите Mas[3]

6

Введите Mas[4]

2

Mas[ 2 2 4 6 ]