8494
.pdfNext i
Пример ввод данных в массив
‘ ввод данных в массив в цикле
Dim A(10) As Integer
For I = 0 To 10
A(I) = I + 2
Next I
' ввод элементов массива с явным указанием типа данных
Dim A() As Integer = { 1, 2, 3, 4, 5 }
Пример. Создайте лист «Лист 2» для сохранения результатов данной лабораторной работы. В одномерном массиве найти сумму элементов,
разделить элементы исходного массива на сумму, вывести результирующий массив. На листе с именем «Лист 2» представлены исходные данные
(Рисунок 11).
Рисунок 11. Исходные данные примера Решение с использованием фиксированного массива:
Sub massivep()
Dim a(2 To 12) As Byte
Dim b(2 To 12) As Double
Dim i As Byte
Dim sum As Double
41
sum = o
For i = 2 To 12
a(i) = Worksheets("лист2").Cells(i, 1)
sum = sum + a(i)
Next
For i = 2 To 12
b(i) = a(i) / sum
Worksheets("лист2").Cells(i, 2) = b(i)
Next
End Sub
Решение задачи с использованием динамического массива:
Sub massiveD()
Dim a() As Byte
Dim b() As Double
Dim i As Byte
Dim sum As Double
ReDim a(2 To 12)
ReDim b(2 To 12)
sum = o
For i = 2 To 12
a(i) = Worksheets("лист1").Cells(i, 1)
sum = sum + a(i)
Next
For i = 2 To 12
b(i) = a(i) / sum
Worksheets("лист1").Cells(i, 3) = b(i)
Next
End Sub
42
Практические задания
Написать программу на языке VBA в соответствии с вариантом задания.
1. Дан массив из N вещественных чисел. Составить программный код подсчета числа элементов массива, которые принадлежат отрезку [1,2],
иначе выдать сообщение «Таких элементов нет».
2. Дан массив из N вещественных чисел. Составить программный код следующей задачи: если последний элемент массива положительный,
заменить нулем каждый третий элемент массива, иначе выдать сообщение
«Все без изменений».
3.Дан массив из N целых чисел. Разработать программный код подсчета, сколько раз число пять встречается среди элементов данного массива, иначе сообщить: «Таких элементов нет».
4.Дан массив А из 10 целых чисел. Написать программу подсчета суммы элементов, расположенных между максимальным и минимальным элементами.
5.Дан массив случайных чисел М[10]. Написать программу, в
которой решается задача: в данном массиве все элементы, индексы которых нечётны, разделить на 10, а остальные поменять на противоположные.
6.Написать программу, в которой решается задача: в одномерном массиве из N чисел, вводимых с клавиатуры, поменять местами минимум и максимум.
7.Написать программу, в которой в одномерном массиве из N
случайных чисел из диапазона [20; 40] поменять местами пару элементов, номера которых вводятся с клавиатуры.
8. Дан массив из N вещественных чисел. Написать программу, в
которой найти отношение суммы положительных элементов заданного массива из N элементов к модулю суммы отрицательных элементов и отношение их количества. Если отрицательных элементов нет, выдать
43
сообщение.
9.Дан массив из N вещественных чисел. Написать программу, в
которой решается задача: если очередной элемент массива четный, то прибавить к нему первый, если нечетный - прибавить последний. Первый и последний элементы не изменять.
10.Даны два одномерных массива одинаковой размерности.
Написать программу получения третьего массива такой же размерности,
каждый элемент которого равен сумме соответствующих элементов
данных массивов.
11.Дан массив из N вещественных чисел. Написать программу,
которая позволяет найти количество положительных и отрицательных
элементов в массиве и номер последнего отрицательного элемента.
12.Дан массив А из 10 целых чисел. Написать программу подсчета суммы элементов, расположенных между максимальным и минимальным элементами.
13.Написать программу замены вещественных чисел массива А,
состоящего из десяти элементов, следующим образом: числа, большие
единицы, уменьшить вдвое, а числа, меньшие единицы, увеличить вдвое.
14.Дан массив из N вещественных чисел. Написать программу замены всех элементов массива квадратами, если есть хотя бы один отрицательный элемент в массиве, иначе ничего не менять.
15.Дан массив из N вещественных чисел. Написать программу вычисления произведения и количества положительных элементов массива.
16.Дан массив из N вещественных чисел. Написать программу вычисления произведения отрицательных и положительных элементов массива.
17.Дан массив из N вещественных чисел. Написать программу определения числа отрицательных, положительных и нулевых элементов массива.
44
18. Дан массив из N вещественных чисел. Написать программу решения следующей задачи: если первый элемент массива положительный, то каждый второй элемент массива заменить числом 55,
иначе выдать сообщение: «все без перемен».
19.Дан массив из N вещественных чисел. Написать программу вычисления сколько раз число 11 встречается среди элементов массива,
впротивном случае вывести сообщение: «таких элементов в массиве нет».
20.Дан массив из N вещественных чисел. Написать программу вычисления количества всех элементов, значения которых меньше среднего значения всех элементов массива.
45
Лабораторная работа 6. Двумерные массивы
Цель: овладеть навыками программирования на языке VBA с
использованием двумерных массивов
Теоретические сведения
Объявление двумерного массива фиксированного размера возможно аналогично объявлению одномерно, но при этом добавляются размерности дополнительных измерений через запятую.
Пример объявления двумерного массива:
Dim А (3, 3) As Integer
Dim А(1 То 5, 1 То 5) As Integer
Dim А(5, 1 То 5) As Integer
Два последних примера иллюстрирую задание нижней границы в двумерном массиве.
Ввод/вывод массивов
Ввод/вывод массива осуществляется поэлементно, а для этого нужно использовать два уровня вложения циклов (по строкам и столбцам).
Пример ввода элементов массива с клавиатуры в ячейки таблицы
Sub matrix()
Dim A(3, 3) As Double
Dim i As Byte
Dim j As Byte
Dim Index1 As Integer
Dim Index2 As Integer
For i = 1 To 3
A(1, i) = InputBox("Введите элементы первого столбца") Worksheets("лист1").Cells(i, 1) = A(1, i)
Next
46
For i = 1 To 3
A(2, i) = InputBox("Введите элементы второго столбца") Worksheets("лист1").Cells(i, 2) = A(2, i)
Next
For i = 1 To 3
A(3, i) = InputBox("Введите элементы третьего столбца") Worksheets("лист1").Cells(i, 3) = A(3, i)
Next
End Sub
Функции для работы с массивами
Для работы с массивами можно использовать ряд функций такие как:
Array(), LBound(), UBound(), Join(), Split().
Функция Array() автоматически создает массив типа Variant и нужного размера и заполняет его переданными значениями.
Пример:
Sub Пример_функции()
Dim a() As Variant
‘ввод элементов массива
a = Array(11, 25, 33, 35.62, 55)
‘вывод в диалоговом окне построчно элементов массива
MsgBox a(0) & vbNewLine & a(1) & vbNewLine _ & a(2) & vbNewLine & a(3) & vbNewLine & a(4) End Sub
Функции LBound() и UBound() информируют о нижней или верхней границе массива соответственно, т.е. возвращают номер минимального или
максимального элемента массива.
47
Join() ‒ объединяет в одну строковую переменную строки из массива,
где в качестве разделителя по умолчанию используется пробел, но при необходимости этот символ можно заменить.
Split() ‒ выполняет обратное действие, а именно разъединяет строку символов на массив строк.
Пример:
Sub Пример_функции()
'инициализация переменных типа Variant
Dim ar, tr
‘ввод элементов масса
ar = Array("Первый элемент", "Второй элемент", "Третий
элемент", "Четвертый элемент", "Последний элемент")
'отображение первого элемента массива
MsgBox ar(LBound(ar))
'отображение последнего элемента массива
MsgBox ar(UBound(ar))
'отображение элементов массива с разделителем "‒"
MsgBox Join(ar, "-")
'разбиение указанного текста массива
tr = Split("Первый элемент-Второй элемент-Третий элемент-
Четвертый элемент-Последний элемент", "-")
отображение третьего по порядку элемента массива
MsgBox tr(2)
End Sub
Пример использования двумерного массива
Дана двумерная матрица ar(3,3). Определить количество отрицательных и положительных элементов массива.
Sub massiv()
48
Dim ar(3, 3) As Integer
p = 0
n = 0
‘ввод элементов массива
For i = 0 To 2
For j = 0 To 2
ar(i, j) = InputBox("Введите элемент массива") Worksheets("Лист1").Cells(i + 1, j + 1) = ar(i, j) Next
Next
‘анализ элементов массива
For i = 0 To 2
For j = 0 To 2
If ar(i, j) > 0 Then p = p + 1
Else
If ar(i, j) < 0 Then n = n + 1
End If
End If
Next
Next
‘вывод в ячейки таблицы соответствующей информации
Worksheets("Лист1").Cells(1, 5) = "Количество отрицательных элементов ="
Worksheets(""Лист11").Cells(1, 9) = n
Worksheets(""Лист1").Cells(2, 5) = " Количество положительных элементов ="
Worksheets(""Лист11").Cells(2, 9) = p
End Sub
49
Врезультате работы этой программы:
в область А1:С3 будут введены элементы массива;
в ячейке Е1 будет введена фраза «Количество отрицательных элементов
=»;
в ячейку Е2 будет введена фраза «Количество положительных элементов
=»;
в ячейке I1 будет отображаться число отрицательных элементов;
в ячейку I2 будет введена число положительных элементов.э
Практические задания
Написать программу на языке VBA в соответствии с вариантом
задания.
1.Составить программу преобразования матрицы А(5,5), разделив каждый элемент матрицы на её минимальный элемент.
2.Составить программу, меняющую местами k-ю строку и j-й столбец квадратной матрицы А(4,4).
3.Составить программу вычисления элементов матрицы А по следующему правилу = 3 × / , где ‒ максимальный элемент исходной матрицы В размера 4 4.
4.Составить программу вычисления номера столбца матрицы размера
4 4, состоящей из нулей и единиц, содержащего максимальное количество
единиц.
5.Составить программу вычисления количества элементов каждой строки матрицы А размера 5 5, удовлетворяющей условию 0<aij<5. Результат вычислений записать в одномерный массив.
6.Составить программу записи элементов массива А размера 4 4 в
одномерный массив в порядке следования столбцов.
50