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

Решение  задач   С  ФОРМИРОВАНИЕМ  одноМЕРНОГО
МАССИВА  иЗ  двумернОГО

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

13.1. Примеры решения задач

Рассмотрим принцип обмена между элементами массива.

Пример 1. Поменять местами в каждой строке матрицы максимальный элемент и элемент, расположенный на главной диагонали:

Выполним замену значений элементов в матрице

.

Графическая схема алгоритма замены значений в матрице представлена на рис. 13.1.

На основании графической схемы

алгоритма (см. рис. 13.1) разработан

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

Option Explicit                                                                              

Sub PR1()

    Dim i As Integer, j As Integer
    Dim  N As Integer, m As Integer
    Dim C As Integer, , max As Integer

    Dim k As Integer, p As Integer

Dim a(1 To 3, 1 To 3) As Integer

                             ‘  нумерация с единицы

N = 3: m = 3

For i = 1 To N

     For j = 1 To m

a(i, j) = Cells(i, j)   ‘считывание A i,j

с рабочего листа Excel                                                                              

Next i

For i = 1 To N

       max = -32768

       For j = 1 To m

If a(i, j) > max Then max = a(i, j): k = i: p = j

     замена элементов
 

 

 
       Next j

 C = a(k, p)

a(k, p) = a(i, i)

a(i, i) = C    ‘

        Next i

For i = 1 To N

             For j = 1 To m

Cells(i + 5, j) = a(i, j)  ‘вывод массива

                                      на лист Excel

             Next j

Next i

End Sub

П р и м е р 2.  Найти строку
с минимальным значением суммы элементов двумерного массива:

.

Все суммы строк элементов записать в одномерный массив.

Графическая схема алгоритма поиска строки с минимальным значением суммы элементов представлена на рис. 13.2, на основании которой разработан программный код PR2 формирования одномерного массива из минимальныхзначенийсумм элементов строк матрицы:

Option Explicit

Sub PR2 ( )

Dim M AsInteger, k, AsInteger

Dim i AsInteger, j AsInteger

Dim min Аs  Integer, N AsInteger

Dim A(1 To 10, 1 To 10) AsInteger

Dim S(1 to 10) As Integer

 N =3:  M = 3 : min = 32767

For i = 1 To  N

For j = 1 To  M

A(i, j) = Cells(i, j)‘ считывание A(i, j)

                          ‘с рабочего листа  Excel

 Next  j

Next  i

             For i = 1 To  N

                 S(i) = 0

For j = 1 To  M

S(i) = S(i) +  A(i, j )   

                                                               Next  j

                                                   Next  i

                                 For i = 1 To N

                                                Cells(i+5, 5) = S(i)   ‘вывод элементов массива

                                             If  S(i) <= min Then min = S(i): k = i

                                Next i

Cells(5,11) = k   ‘вывод номера строки c минимальным значением

суммы элементов 

Cells(6,11) = min ‘вывод минимальной суммы на рабочий лист Excel

End Sub

13.2. Индивидуальные задания

Задание 1. Задать массив А(5, 5) с помощью генератора  случайных чисел в интервале [– 10; 40]. Разработать ГСА и программный код обработки двумерного массива согласно своему варианту (табл. 13.1), результаты обработки массива вывести на рабочий лист Excel с пояснениями.

Таблица 13.1

Задание по обработке двумерного массива

 Номер варианта

Задание

1

2

1

Поменять местами максимальные элементы, стоящие на главной и побочной диагоналях

2

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

3

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

4

 Найти в каждой строке матрицы максимальный и минимальный элементы и поместить их на место первого и последнего элемента  строки  соответственно

5

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

Окончание табл.13.1

1

2

6

Найти в  каждой  строке наибольший элемент, поменять его и элемент главной диагонали  местами

7

Найти  строки с наибольшим и наименьшим значением суммы элементов.  Вывести на печать найденные строки и суммы их элементов

8

Поменять местами значения наибольшего и наименьшего элементов матрицы каждого столбца

9

Поменять местами значения элементов двумерного массива, симметричных относительно главной диагонали

10

Найти номер столбца двумерного массива, для которого среднеарифметическое значение его элементов минимально

11

В двумерном массиве заменить все элементы, меньшие значения суммы элементов первой строки, этой суммой

12

Задать матрицу с помощью генератора случайных чисел, находящихся в интервале [5; 20]. Найти столбец с минимальным значением произведения элементов

13

Задан двумерный массив. Для каждого столбца выяснить, имеются ли в нем нечетные элементы и элементы, большие некоторого числа d. Результат вывести на лист Excel c пояснениями

14

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