- •Основы и принципы работы в vba
- •Часть 4 омск 2008
- •Часть 4
- •12.1. Примеры выполнения работ
- •12.2. Индивидуальные задания
- •Окончание табл. 12.1
- •13.1. Примеры решения задач
- •Option Explicit
- •Dim k As Integer, p As Integer
- •13.2. Индивидуальные задания
- •Создание и настройка пользовательской формы
- •14.1. Настройка среды программирования
- •14.1.1. Создание пользовательской формы
- •14.1.2. Панель элементов управления
- •14.1.3. Определение свойства объекта
- •14.1.4. Процедуры обработки событий и методов
- •14.2. Пример разработки приложения
- •14.2.1. Разработка пользовательского интерфейса
- •14.2.2. Установка свойств объектов
- •14.2.3. Составление программного кода
- •14.3. Запуск программы
- •14.4. Индивидуальные задания
- •Часть 4
- •644046, Г. Омск, пр. Маркса, 35
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
’ замена
элементов
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 As Integer, k, As Integer
Dim i As Integer, j As Integer
Dim min Аs Integer, N As Integer
Dim A(1 To 10, 1 To 10) As Integer
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
Nextj
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
Nexti
Cells(5,11) =k‘вывод номера строкиcминимальным значением
суммы элементов
Cells(6,11) =min‘вывод минимальной суммы на рабочий листExcel
EndSub
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 |
В двумерном массиве для каждого столбца найти: а) сумму нечетных элементов; б) количество положительных элементов; в) коли- чество элементов, значения которых кратны пяти |
Задание 2. Создать массив С(6, 6) с помощью генератора случайных чисел в интервале [–20; 60].
Сформировать одномерный массив из элементов созданного двумерного массива по признаку, указанному в задании (выбирается согласно своему варианту). Разработать ГСА и программный код формирования одномерного массива и вывести массив на рабочий лист Excel:
1) из элементов четных строк, расположенных над главной диагональю;
2) из четных элементов побочной диагонали;
3) из элементов, значения которых кратны трем и которые расположены под главной диагональю;
4) каждый элемент, которого равен количеству элементов соответствующего столбца, больших числа n;
5) каждый элемент, которого равен сумме положительных элементов соответствующего столбца;
6) все его положительные элементы записать в один одномерный массив, а остальные – в другой;
7) каждый элемент, которого равен количеству нечетных отрицательных элементов соответствующего столбца;
8) каждый элемент, которого равен сумме элементов соответствующей строки, меньших числа n;
9) каждый элемент, которого равен сумме положительных элементов соответствующей строки, кратных четырем или пяти;
10) все его четные элементы записать в один одномерный массив, а нечетные – в другой;
11) из элементов, значения которых больше 10 и которые расположены над побочной диагональю;
12) каждый элемент, которого равен количеству положительных элементов соответствующей строки, кратных трем или семи;
13) из положительных элементов, значение которых кратны пяти;
14) из элементов, максимальных по модулю, в каждой строке;
15) из отрицательных элементов, расположенных под побочной диаго-налью.
Лабораторная работа 14