По первому тесту выполнил дважды задания. Результат получается правильный (проверял калькулятором). Пишет, что "Задание не проверено" и предлагает повторить. |
Использование языка Free Pascal для обработки массивов
5.1 Общие сведения о массивах
В предыдущих главах мы рассматривали задачи, в которых использовались скалярные переменные. Однако при обработке однотипных данных (целочисленных значений, строк, дат и т. п.) оказывается удобным использовать массивы. Например, можно создать массив для хранения значений температуры в течении года. Вместо создания множества (365) переменных для хранения каждой температуры, например temperature1, temperature2, temperature3,... temperature365 можно использовать один массив с именем temperature, где каждому значению будет соответствовать порядковый номер (см. табл. 5.1).
№ элемента | 1 | 2 | 3 | 4 | ... | 364 | 365 |
temperature | -1.5 | -3 | -6.7 | 1 | ... | 2 | -3 |
Таким образом, можно дать следующее определение.
Массив — структурированный тип данных, состоящий из фиксированного числа элементов одного типа.
Массив, представленный в таблице 5.2, имеет 7 элементов, каждый элемент сохраняет число вещественного типа. Элементы в массиве пронумерованы от 1 до 7. Такого рода массив, представляющий собой просто список данных одного и того же типа, называют простым, или одномерным массивом. Для доступа к данным, хранящимся в определённом элементе массива, необходимо указать имя массива и порядковый номер этого элемента, называемый индексом.
Если возникает необходимость хранения данных в виде таблиц, в формате строк и столбцов, то необходимо использовать многомерные массивы.
Элементы массива | ||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
-1.5 | -3.913 | 13.672 | -1.56 | 45.89 | 4.008 | -3.61 |
В таблице 5.3 приведён пример массива, состоящего из трёх строк и четырёх столбцов. Это двумерный массив (матрица). Строки в нём можно считать первым измерением, а столбцы вторым. Для доступа к данным, хранящимся в этом массиве, необходимо указать имя массива и два индекса: первый должен соответствовать номеру строки, а второй номеру столбца, в которых хранится необходимый элемент.
Номера столбцов | |||||
1 | 2 | 3 | 4 | ||
Номера строк | 1 | 6.3 | 4.3 | -1.34 | 5.02 |
2 | 1.1 | 4.7 | 8.12 | 8.5 | |
3 | -2.4 | -6.2 | 11.23 | 8.18 |
После общего знакомства с понятием "массив", рассмотрим работу с массивами в языке Free Pascal.
5.2 Описание массивов
Для описания массива служат служебные слова array of. Описать массив можно двумя способами.
Первый — ввести новый тип данных, а потом описать переменные нового типа. В этом случае формат оператора type следующий:
type
имя_типа = array [ тип_индекса ] of тип_компонентов;
В качестве типа_индекса следует использовать перечислимый тип. Тип_компонентов — это любой ранее определённый тип данных, например:
type massiv=array [ 0.. 1 2 ] of real; //Тип данных massiv из 13 элементов, которые нумеруются от 0 //до 12. dabc=array [ - 3.. 6 ] of integer; //Тип данных dabc из 10 элементов, которые нумеруются от //-3 до 6. var x, y : massiv; z : dabc;
Можно не вводить новый тип, а просто описать переменную следующим образом:
var переменная : array [ тип_индекса ] of тип_переменных;
Например:
var z, x : array [ 1.. 2 5 ] of word; //Массивы z и x из 25 значений типа word, которые нумеруются //от 1 до 25. g : array [ - 3.. 7 ] of real; //Массив g из 11 значений типа real, которые нумеруются от -3 //до 7.
Для описания массива можно использовать предварительно определённые константы:
const n=10; m=12; var a : array [ 1.. n ] of real; b : array [ 0..m] of byte;
Константы должны быть определены до использования, так как массив не может быть переменной длины!
Двумерный массив (матрицу) можно описать, применив в качестве базового типа (типа компонентов) одномерный:
type massiv=array [ 1.. 2 0 0 ] of real; matrica=array [ 1.. 3 0 0 ] of massiv; var ab : matrica;
Такая же структура получается при использовании другой формы записи:
type matrica = array [ 1.. 3 0 0, 1.. 2 0 0 ] of real; var ab : matrica;
или
var ab : array [ 1.. 3 0 0, 1.. 2 0 0 ] of real;
При всех трёх определениях мы получали матрицу вещественных чисел, состоящую из 300 строк и 200 столбцов.
Аналогично можно ввести трёхмерный массив или массив большего числа измерений:
type abc=array [ 1.. 4, 0.. 6, _ 7.. 8, 3.. 1 1 ] of real; var b : abc;