Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование для начинающих 2011-09-02.pdf
Скачиваний:
45
Добавлен:
09.06.2015
Размер:
576.39 Кб
Скачать

12. Двумерные массивы

12.1. Двумерные массивы: теория

Если элементы одномерного массива можно мыслить себе как координаты некоторого вектора, то двумерный массив будет соответствовать матрице. Опишем для примера двумерный массив размером 10х20:

const

n = 10; m = 20;

type

TMatrix = array [0..n-1, 0..m-1] of real; var

A: TMatrix;

При обращении к элементам такого массива необходимо указывать сразу два индекса. Например, A[0,0] – левый верхний элемент матрицы и т.п. В остальном двумерные массивы ничем не отличаются от одномерных.

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

Еще один способ описать двумерный массив, это описать массив массивов:

type

TVector = array [0..n-1] of real; TMatrix2 = array [0..m-1] of TVector;

Каждый элемент массива TMatrix2 можно мыслить как вектор-строку матрицы. Обращение к левому верхнему элементу в этом случае будет выглядеть так: A[0][0]. Здесь A[0] -первая строка, которая сама является массивом, но одномерным.

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

Задание 12: Двумерные массивы

1.Опишите тип – двумерный массив, количество элементов по горизонтали

ивертикали пусть задается константами. Создайте процедуры: заполняющую такой массив случайными числами, и печатающую массив на экране.

2.Создайте процедуры:

(а)Обнуляющую двумерный массив.

(б) Заносящую в квадратный двумерный массив единичную матрицу (с единицами на главной диагонали и нулями во всех прочих местах).

3. Создайте процедуру, присваивающую элементам двумерного массива их порядковые номера. Элементы нумеруются следующим образом:

(а) Построчно, то есть

æ

1

2

3

n ö

ç

n +1

n + 2 n + 3

 

÷

ç

2n ÷

ç

2n +1

2n + 2 2n + 3

3n ÷

ç

 

 

 

 

÷

ç

÷

ç

 

 

n

2 ÷

è(n -1)n +1

ø

(б) По спирали. Например, для матрицы 5×5 должно получиться

æ 1

2

3

4

5ö

ç

17

18

19

6

÷

ç16

÷

ç15

24

25

20

7

÷

ç

23

22

21

8

÷

ç14

÷

ç

12

11

10

9

÷

è13

ø

(в) По диагонали. Например:

æ 1

3

6

10

15 ö

ç

2

5

9

14

19

÷

ç

÷

ç

4

8

13

18

22

÷

ç

7

12

17

21

24

÷

ç

÷

ç

 

16

20

23

25

÷

è11

ø

4.Создайте процедуру, которая вычтет строку с заданным номером, помноженную на коэффициент, из всех последующих строк матрицы. Матрица, номер вычитаемой строки и коэффициент должны быть параметрами.

5.Создайте процедуру, осуществляющую транспонирование матрицы.