Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по теории.docx
Скачиваний:
4
Добавлен:
28.09.2019
Размер:
530.05 Кб
Скачать

Билет №10:

Опр. Массивом называется совокупность относительных данных, которые: 1) обладают общим именем 2) имеют различные индексы. Массив может обладать несколькими размерами, (например длинна, высота, ширина) в этом смысле в массиве отражается структура многомерного параллелепипеда. Например матрица является двумерным массивом, т.к её элементы снабжаются двумя индексами. В качестве индексов элемента массива могут использоваться целые числа, символы, логические значения, т.е. любые данные порядкового типа, главное чтобы значения каждого индекса образовывали отрезок в соседних значениях, такие отрезки называются диапазонами и обладают квадратными скобками, например: [-2..5]; [‘A’..’D’]; [False..True]. Диапазон представляет собой группу элементов порядкового типа. При описании массива используется слово Array, различают статистические и динамические массивы. Статистический массив в начале выполнения программы занимает определённое место в памяти и не осовбождает его до конца программы, число элементов и диапозон индексов назначается 1 раз и не изменяются.

Он строится по схеме: Имя: Array[диапазон] of (тип данных массива). Массив может описываться вместе с начальными значениями или без них, примеры ниже в конце билета.

Динамический массив первоначально не индексируется и не содержит элементов, он приобретает элементы только в процессе выполнения программы, индексами служат исключительно целые числа от 0. Такой массив можно разрушать и создавать снова. Участок памяти, занимаемый массивом находится за пределом области программы («в куче»).

Динамический массив описывается без диапазона и без начальных значений. d: Array of integer; Количество элементов массива называется ДЛИНОЙ. Длина статистического массива определяется в момент описания, длину динамического массива надо задавать, например: SetLength(d,10). Отдельный элемент массива указывается при помощи массива и индекса в квадратных скобках: d[1]; s[‘A’]. При работе с массивом важно выяснить некоторые характеристики массива, например размер элемента массива или всего массива (число байт). Оператор Size of возвращает размер своего массива, оператор Length возвращает число элементов массива: Size of (d[0]*Length(d0,0); функции Low и High возвращают наименьший и наибольший индексы в массиве. В целом элементы массивов являются обычными переменными, но они не могут служить счётчиками цикла For, например: For a[1]:=1 To 10 Do – ошибка!

Многомерные массивы

program Poly_Array;

{$APPTYPE CONSOLE}

uses

SysUtils;

Var

//Статические массивы

a,b:Array[1..4,1..8] Of Integer; //Совместное описание двух массивов

c:Array[1..2,1..3] Of Integer= //Описание с начальными значениями

((3, 2,-1),

(4, 5, 0));

m,n,k:Array[1..2,1..2]Of Integer;//Для хранения матриц

//Динамические массивы

d:Array Of Array Of Char;

p:Array Of Array Of Integer;

//

I,j:Integer;

Begin

//Задание статического массива

WriteLn('Array a:'); // Array a:

For i:=1 To 4 Do // 0 3 86 20 27 67 31 16

Begin // 37 42 8 47 7 84 5 29

For j:=1 To 8 Do // 91 36 77 32 69 84 71 30

Begin // 16 32 46 24 82 27 48 14

a[i,j]:=Random(100);

Write(a[i,j]:5);

End;

WriteLn;

End;

//----------------------------

//Задание статического массива

b:=a; //Присваивание возможно, т.к. описаны вместе

WriteLn('Array b:'); // Array b:

For i:=1 To 4 Do // | 87| 28| 77| 97| 49| 88| 82| 2|

Begin // | 14| 14| 50| 2| 59| 0| 77| 65|

Write('|'); // | 77| 70| 55| 20| 68| 59| 95| 64|

For j:=1 To 8 Do // | 99| 24| 67| 29| 8| 77| 49| 88|

Begin

b[i,j]:=Random(100);

Write(a[i,j]:4,'|');

End;

WriteLn;

End;

//----------------------------

//Задание двух матриц и вычисление суммы

WriteLn('Arrays m,n,k:');

For i:=1 To 2 Do

Begin

For j:=1 To 2 Do

Begin

m[i,j]:=Random(10); // Arrays m,n,k:

n[i,j]:=Random(10); // | 5 9| | 5 6| | 10 15|

k[i,j]:=m[i,j]+n[i,j]; // | 3 7| | 0 9| | 3 16|

End;

Write('|');

For j:=1 To 2 Do

Write(m[i,j]:2);

Write('| |');

For j:=1 To 2 Do

Write(n[i,j]:2);

Write('| |');

For j:=1 To 2 Do

Write(k[i,j]:3);

WriteLn('|');

End;

//----------------------------

//Задание динамического прямоугольного массива

SetLength(d,3,4);

WriteLn('Array d:'); // Array d:

For i:=0 To 2 Do // N O Y R

Begin // I A S Z

For j:=0 To 3 Do // U T F D

Begin //

d[i,j]:=Char(Ord('A')+Random(26));

Write(d[i,j]:4);

End;

WriteLn;

End;

//----------------------------

//Задание динамического треугольного массива (треугольник Паскаля)

SetLength(p,5); //Столько будет строк

For i:=0 To 4 Do //Формирование остальных строк

Begin

SetLength(p[i],i+2); //Столько элементов в i-й строке

p[i,0]:=1; p[i,i+1]:=1; //Задание крайних элементов

For j:=1 To i Do //Вычисление средних элементов

p[i,j]:=p[i-1,j-1]+p[i-1,j];

End;

WriteLn('Array p:'); // Array p:

For i:=0 To 4 Do // 1 1

Begin // 1 2 1

Write('':8-i*2); // 1 3 3 1

For j:=0 To i+1 Do // 1 4 6 4 1

Write(p[i,j]:4); // 1 5 10 10 5 1

WriteLn;

End;

//----------------------------

WriteLn('Len p = ',Length(p));// Len p = 5

WriteLn('Low p = ',Low(p)); // Low p = 0

WriteLn('Hig p = ',High(p)); // Hig p = 4

//----------------------------

ReadLn;

End.

{---------------------}

{ ОПИСАНИЕ МАССИВОВ }

{---------------------}

Var

{Статические массивы}

s:Array['A'..'C'] Of Boolean; //Логический массив

c:Array[1..5] Of Char= //Символьный массив

'ABCDE'; //с начальными данными

a:Array[5..10] Of Integer= //Числовой массив

(3,5,4,2,6,7); //с начальными данными

{Динамические массивы}

d:Array Of Integer; //Числовой динамический массив