Форум программистов, компьютерный форум, киберфорум
Arigato
Войти
Регистрация
Восстановить пароль
Рейтинг: 5.00. Голосов: 2.

Шаблоны для решения задач с массивами в Pascal, Delphi

Запись от Arigato размещена 12.10.2015 в 10:43
Обновил(-а) Arigato 12.10.2015 в 22:32

В учебных задачах на массивы обычно рассматриваются одномерные массивы - вектора или двумерные - матрицы. Часть кода практически во всех подобных задачах остается неизменной. Это объявление типов и переменных, ввод и вывод массивов. А значит можно составить шаблоны для решения задач с массивами.

Шаблон для решения задач с одномерными массивами (векторами)

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 - знаков после точки}
Размещено в Delphi, Pascal
Показов 9572 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru