В учебных задачах на массивы обычно рассматриваются одномерные массивы - вектора или двумерные - матрицы. Часть кода практически во всех подобных задачах остается неизменной. Это объявление типов и переменных, ввод и вывод массивов. А значит можно составить шаблоны для решения задач с массивами.
Шаблон для решения задач с одномерными массивами (векторами)
Pascal | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| const
n = 10; {количество элементов в массиве}
type
TVector = array[1..n] of Integer; {целочисленный массив}
var
A: TVector; {массив}
i: Integer; {индекс}
{ * Здесь объявляем другие переменные * }
begin
{НАЧАЛО: Заполнение массива}
WriteLn('Введите массив (', n, ' элементов)');
for i := 1 to n do begin
Write('A[', i, '] = ');
ReadLn(A[i]); {ввод элемента с клавиатуры}
end;
{КОНЕЦ: Заполнение массива}
{ * Здесь решение самой задачи * }
{НАЧАЛО: Вывод массива}
Write('Массив A: ');
for i := 1 to n do begin
Write(A[i], ' ');
end;
WriteLn;
{КОНЕЦ: Вывод массива}
ReadLn; {задержка перед завершением}
end. |
|
Это наиболее распространенный шаблон. Могут быть нюансы, например, массив не вводится пользователем, а заполняется случайными числами. В этом случае замените блок "Заполнение массива" на следующий:
Pascal | 1
2
3
4
5
6
7
8
9
| {НАЧАЛО: Заполнение массива}
Randomize;
Write('Исходный массив: ');
for i := 1 to n do begin
A[i] := Random(100); {случайное значение 0..99}
Write(A[i], ' ');
end;
WriteLn;
{КОНЕЦ: Заполнение массива} |
|
Если массив не целочисленный, а вещественный, то прописываем соответствующий тип элементов массива:
Pascal | 1
2
| type
TVector = array[1..n] of Real; {вещественный массив} |
|
А во время вывода указываем количество знаков после десятичной точки:
Pascal | 1
| Write(A[i]:0:2, ' '); {2 знака после точки} |
|
Если у вас возникнут проблемы с выводом русских букв в консоль, замените их английскими буквами.
Шаблон для решения задач с двумерными массивами (матрицами)
Pascal | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| const
m = 3; {количество строк матрицы}
n = 5; {количество столбцов матрицы}
type
TMatrix = array[1..m,1..n] of Integer; {целочисленная матрица}
var
A: TMatrix; {матрица}
i, j: Integer; {индексы}
{ * Здесь объявляем другие переменные * }
begin
{НАЧАЛО: Заполнение матрицы}
WriteLn('Введите матрицу ', m, 'x', n);
for i := 1 to m do begin
for j := 1 to n do begin
Write('A[', i, ',', j, '] = ');
ReadLn(A[i,j]); {ввод элемента с клавиатуры}
end;
end;
{КОНЕЦ: Заполнение матрицы}
{ * Здесь решение самой задачи * }
{НАЧАЛО: Вывод матрицы}
WriteLn('Матрица A: ');
for i := 1 to m do begin
for j := 1 to n do begin
Write(A[i,j]:6); {6 - число занимаемых позиций}
end;
WriteLn;
end;
{КОНЕЦ: Вывод матрицы}
ReadLn; {задержка перед завершением}
end. |
|
В некоторых задачах удобнее представлять матрицу не как двумерный массив, а как массив векторов. В таких задачах можно работать с отдельными строками матрицы как с самостоятельными массивами. В этом случае объявление типа заменяем на следующее:
Pascal | 1
2
3
| type
TVector = array[1..n] of Integer; {целочисленный массив}
TMatrix = array[1..m] of TVector; {массив массивов (матрица)} |
|
Если надо заполнить матрицу случайными значениями, то заменяем блок "Заполнение матрицы":
Pascal | 1
2
3
4
5
6
7
8
9
10
11
| {НАЧАЛО: Заполнение матрицы}
Randomize;
WriteLn('Исходная матрица:');
for i := 1 to m do begin
for j := 1 to n do begin
A[i,j] := Random(100); {случайное значение 0..99}
Write(A[i,j]:6); {6 - число занимаемых позиций}
end;
WriteLn;
end;
{КОНЕЦ: Заполнение матрицы} |
|
Для вещественных матриц объявляем соответствующий тип данных:
Pascal | 1
2
| type
TMatrix = array[1..m,1..n] of Real; {вещественная матрица} |
|
Во время вывода оставляем нужное число знаков после десятичной точки:
Pascal | 1
| Write(A[i,j]:6:2); {6 - число занимаемых позиций, 2 - знаков после точки} |
|
|