Основы и принципы работы в VBA. Часть 3: Методические указания к выполнению лабораторных работ, страница 6

12)   Сформировать массив Y, предварительно вставив в массив А на 6-ю позицию константу, равную –1,2,  и у нового массива определить количество отрицательных элементов.

13)   Сформировать массив Р из четных элементов массива А, кратных двум, и найти их произведение.

14)   Задан массив R. Сформировать массив В, элементы которого определяются следующим образом:

15)   Сформировать массив К из элементов массива А,  которые кратны двум.

16)   Найти в массиве А максимальный элемент,  определить его порядковый номер и сформировать массив Р, предварительно  удалив этот элемент из массива А.

17)   Задан массив А, сформировать новый массив U из тех элементов исходного массива А, которые меньше суммы  своих предшест­вующего и последующего элементов.

18)   Сформировать массив Р из ненулевых элементов массива S. Задан массив W, сформировать новый массив В из тех элементов исходного массива W, которые не превышают суммы двух своих предшествующих элементов.

19)   Сформировать массив Р из положительных элементов массива X и найти  их сумму и количество.

20)   Задан массив V, сформировать новый массив Q из тех элементов исходного массива, которые имеют неравные предыдущий и по­следующий элементы.

21)   Задан массив Y, сформировать новый массив W из нечетных   элементов исходного массива, превышающих свой индекс больше чем в два раза.

22)   Сформировать массив Y из четных элементов  массива  А.

Лабораторная работа 11

Двумерные  массивы.  Ввод  и  вывод  матрицы.

Транспонирование,  перемножение  матриц.

Цель работы: получить практические навыки хранения, ввода, вывода двумерных массивов в приложении Microsoft Excel с помощью языка VBA и выполнения операций над ними.

11.1. Теоретические сведения

Двумерные массивы – набор однотипных элементов, расположенных в нескольких строках и столбцах (рис. 11.1). Примером двумерного массива в математике является матрица.

Пример использования двумерного массива из жизни – билеты в кино или театр, имеющие для каждого зрителя две координаты – ряд и место.

Каждый элемент двумерного массива  обозначается при помощи имени
и индексов, заключенных в круглые скобки, например, A(i, j); X(4, 3);
P(2×i, j+1), где первый индекс – номер строки, второй – номер столбца.

А(1,1)

А(1,2)

А(1,3)

А(1,4)

А(2,1)

А(2,2)

А(2,3)

А(2,4)

А(3,1)

А(3,2)

А(3,3)

А(3,4)

      Массив А(1 To 4, 1 To 3)

Рис. 11.1. Структура двумерного массива А

Двумерный массив (матрица) объявляется в программе при помощи оператора Dim, например:

Dim A(10, 10) As Тип                        ‘  нумерация с нуля

Dim A(1 To 10, 1 To 10) As Тип       ‘  нумерация с единицы

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

Dim  B( )  As  String       ‘объявляет динамический массив

ReDim  B(1 To 30)           ‘изменяет размер массива до 30 элементов

Если в матрице число строк равно числу столбцов, то матрица называется квадратной. Для квадратной матрицы общее число строк или столбцов  называют порядком матрицы. Главной диагональю квадратной матрицы называется диагональ, проходящая через верхний  левый и нижний правый угол, т. е. совокупность элементов вида аii, где i = 1, 2, …, 5 (Рис. 11.2).

11.1.1. Ввод двумерного массива

Рассмотрим два способаввода двумерного массива:

Первый способ – считывание массива с рабочего листа Excel.

Программный код:

For i = 1 To  M                     ‘M – количество строк массива

    For j = 1 To  N                  ‘N – количество столбцов массива

        A(i, j) = Cells(i, j)

    Next  j

Next  i

Второй способ –формирование массива при помощи генератора случайных чисел.

Программный код:

Randomize

For i = 1 To M

    For j = 1 To N

        A(i,j) = X * Rnd + 1

    Next j

Next i

В данном случае A(i, j) будет принимать случайные значения от единицы до X.

 


11.1.2. Вывод двумерного массива

Выводится двумерный массив на рабочий лист Excel, программа, выполняющая данную операцию, выглядит следующим образом.

Программный код:

For i = 1 To M

    For j = 1 To N

        Cells(i,j) = A(i,j)

    Next j

Next i

11.1.3. Преобразования двумерного массива

Над массивами можно выполнять такие операции, как транспонирование и перемножение. Для выполнения данных операций в программу вводится дополнительный массив Z(i, j). Результат поэлементного перемножения массива A(i, j) на массив В(i, j) заносится в массив Z(i, j) с помощью следующего фрагмента программного кода:

For i = 1 To M

    For j = 1 To N

        Z(i,j) = A(i,j)* B(i,j)

    Next j

Next i

Транспонированный массив А(i, j)Т заносится в массив Z(i, j) с помощью следующего фрагмента программного кода:

 
For i = 1 To M

    For j = 1 To N

        Z(i,j) = A(j,i)

    Next j

Next i

Пример 1. Заполнить квадратный массив четвертого порядка  случайными числами, транспонировать полученный результат и умножить его на . Вывести результаты работы программы на рабочий лист с пояснениями. Графическая схема алгоритма для данной программы приведена на рис. 11.3. Результат работы программы представлен на рис. 11.4.

Программный код:

Option Explicit

Sub  PR1  ( )