Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_СА_СМ_ДМ.doc
Скачиваний:
36
Добавлен:
02.05.2019
Размер:
3.46 Mб
Скачать

Объявление матриц

Двумерный массив, как и любая переменная программы, перед использованием должен быть объявлен в разделе описания переменных. В общем виде инструкция объявления массива выглядит следующим образом:

Имя: array [нижний_индекс_строки. .верхний_индекс_строки, нижний_индекс_столбца…верхний_индекс_столбца] of тип;

где:

имя — имя массива;

array — зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива;

нижний_индекс_строки (столбца) и верхний_индекс_строки (столбца) — целые константы, определяющие диапазон изменения индекса строк (столбцов) элементов матрицы и, неявно, количество элементов (размер) матрицы;

тип — тип элементов двумерного массива (базовый тип).

Так же двумерный массив можно описать так:

array[нижний_индекс_строки.. верхний_индекс_строки] of array[нижний_индекс_столбца.. верхний_индекс_столбца] of тип;

Примеры объявления двумерных массивов:

temper:array[1..3, 1..4] of real;

M1 : array[1..3] of array[1..3] of Byte;

name:array[1..30,1...8] of string[25];

Приведем пример объявления с помощью константы двумерного массива, состоящего из 12 элементов типа Integer:

const

n=4;

m=3;

var

a:array [1..n, 1..m] of integer;

Существует еще один способ объявления массивов :

Имя_массива: array [нижний_индекс..верхний_индекс] of тип;

Имя_матрицы: array[нижний_индекс..верхний_индекс] of имя_массива;

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

a[1,2]:=4;

d:=a[2,1]+a[3,2];

ShowMessage(name[n,m]);

temper[i,j] := StrToFloat(Edit1.text);

Индексы не должены выходить за пределы диапазона, указанного в описании двумерного массива в квадратных скобках.

Инициализация двумерного массива

Если двумерный массив не является локальным, т. е. объявлен не в процедуре обработки события, а в разделе переменных модуля, то одновременно с объявлением массива можно выполнить его инициализацию, т. е. присвоить начальные значения элементам массива. Инструкция объявления массива с одновременной его инициализацией в общем виде выглядит так:

Имя:array [нижний_индекс_строки..верхний_индекс_строки, нижний_индекс_столбца..верхний_индекс_столбца] of тип = (список);

где список — разделенные запятыми значения элементов массива.

Например:

a: array[1...2,1..5] of integer = (0,1,2,3,4

5, 6, 7, 8, 9);

Обратите внимание, что количество элементов списка инициализации должно соответствовать размерности массива. Если это будет не так, то компилятор выведет cообщение об ошибке:

Number of elements differs from declaration

(количество элементов не соответствует указанному в объявлении).

При попытке инициализировать локальный массив компилятор выводит сообщение об ошибке:

Cannot initialize local variables

(локальная переменная не может быть инициализирована).

Локальный массив можно инициализировать только во время работы программы, например, так:

for i := 1 to 2 do

for j:= 1 to 5 do

a[i[][j]:= i+2

Задание к выполнению лабораторной работы

Задание А

Выбрать алгоритм, составить его блок-схему и программу, в ко-

торой:

1) разбив отрезки [a; b] и [c; d] соответственно на n и m частей, в точ-

ках xi = a + (i – 1)×h1, yj = c + (j – 1)×h2, где h1 = (b – a)/n, h2 = (d – c)/m, i =

1, 2, …, n+1, j = 1, 2, …, m+1 вычислить значения элементов aij матрицы

A=||aij||nm по формуле aij = z(xi, yj), где z = z(x, y) – функция, заданная в

варианте задания; из элементов матрицы А составить матрицу В так, чтобы в ней элементы строк матрицы А располагались в порядке возрастания. Указанным в варианте задания способом найти вектор (матрицу, строку) X;

Задание Б

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