Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

8583

.pdf
Скачиваний:
1
Добавлен:
25.11.2023
Размер:
1.74 Mб
Скачать

‘ ввод данных в массив в цикле

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 sum = o

For i = 2 To 12

41

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

Практические задания

Написать программу на языке VBA в соответствии с вариантом задания.

42

1.Дан массив из N вещественных чисел. Составить программный код подсчета числа элементов массива, которые принадлежат отрезку [1,2], иначе выдать сообщение «Таких элементов нет».

2.Дан массив из N вещественных чисел. Составить программный код следующей задачи: если последний элемент массива положительный,

заменить нулем каждый третий элемент массива, иначе выдать сообщение

«Все без изменений».

3.Дан массив из N целых чисел. Разработать программный код подсчета, сколько раз число пять встречается среди элементов данного массива, иначе сообщить: «Таких элементов нет».

4.Дан массив А из 10 целых чисел. Написать программу подсчета суммы элементов, расположенных между максимальным и минимальным элементами.

5.Дан массив случайных чисел М[10]. Написать программу, в

которой решается задача: в данном массиве все элементы, индексы которых нечётны, разделить на 10, а остальные поменять на противоположные.

6.Написать программу, в которой решается задача: в одномерном массиве из N чисел, вводимых с клавиатуры, поменять местами минимум

имаксимум.

7.Написать программу, в которой в одномерном массиве из N

случайных чисел из диапазона [20; 40] поменять местами пару элементов,

номера которых вводятся с клавиатуры.

8.Дан массив из N вещественных чисел. Написать программу, в

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

9.Дан массив из N вещественных чисел. Написать программу, в

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

43

прибавить к нему первый, если нечетный - прибавить последний. Первый и

последний элементы не изменять.

10.Даны два одномерных массива одинаковой размерности.

Написать программу получения третьего массива такой же размерности,

каждый элемент которого равен сумме соответствующих элементов

данных массивов.

11.Дан массив из N вещественных чисел. Написать программу,

которая позволяет найти количество положительных и отрицательных

элементов в массиве и номер последнего отрицательного элемента.

12.Дан массив А из 10 целых чисел. Написать программу подсчета суммы элементов, расположенных между максимальным и минимальным элементами.

13.Написать программу замены вещественных чисел массива А,

состоящего из десяти элементов, следующим образом: числа, большие

единицы, уменьшить вдвое, а числа, меньшие единицы, увеличить вдвое.

14.Дан массив из N вещественных чисел. Написать программу замены всех элементов массива квадратами, если есть хотя бы один отрицательный элемент в массиве, иначе ничего не менять.

15.Дан массив из N вещественных чисел. Написать программу вычисления произведения и количества положительных элементов массива.

16.Дан массив из N вещественных чисел. Написать программу вычисления произведения отрицательных и положительных элементов массива.

17.Дан массив из N вещественных чисел. Написать программу определения числа отрицательных, положительных и нулевых элементов массива.

18.Дан массив из N вещественных чисел. Написать программу решения следующей задачи: если первый элемент массива положительный, то каждый второй элемент массива заменить числом 55,

44

иначе выдать сообщение: «все без перемен».

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]