- •Лабораторная работа № 3
- •1. Оператор цикла с параметром (For…Next) 1
- •2. Циклы с предусловием и постусловием 2
- •3. Понятие массива и способы его объявления 5
- •4. Размещение элемента управления на рабочем листе ms Excel 9
- •1. Оператор цикла с параметром (For…Next)
- •2. Циклы с предусловием и постусловием
- •3. Понятие массива и способы его объявления
- •1) Одномерный статический массив
- •2) Двумерный статический массив
- •3) Динамический массив:
- •Пример 4. Сортировка элементов массива (методом выбора)
- •3.2 Типовые алгоритмы обработки двумерного массива Пример 5. Определить сумму и количество положительных элементов в массиве целых чисел.
- •Схемы для обращения к элементам на главной (побочной) диагоналях
- •3.3 Типовые алгоритмы обработки динамического массива
- •4. Размещение элемента управления на рабочем листе ms Excel
- •Порядок выполнения работы:
- •Задание 1.
- •Задание 2.
- •Контрольные вопросы:
Пример 4. Сортировка элементов массива (методом выбора)
Public Sub Sort()
Const N = 10
Dim A(N) As Integer, vs As Integer
Dim i As Integer, max As Integer, j As Integer
Dim str As String, str1 As String
Randomize ' Инициализация генератора случайных чисел
For i = 1 To N
A(i) = Int((10 * Rnd) + 1) '[случайное число от 1 до 10]
Next i
' формирование строки для вывода элементов исходного массива
For i = 1 To N
str = str & A(i) & " "
Next i
For j = 1 To N
'поиск максимального элемента, начиная с j-го
max = j
For i = j To N
If A(i) > A(max) Then max = i
Next i
'поменять местами j-ый и найденный максимальный
vs = A(j)
A(j) = A(max)
A(max) = vs
Next j
' формирование строки для вывода элементов отсортированного массива
For i = 1 To N
str1 = str1 & A(i) & " "
Next i
MsgBox "Исходный массив:" & Chr(13) & str & Chr(13) & "Отсортированный массив: " & Chr(13) & str1, , "Вывод массива"
End Sub
Рисунок – Пример работы программы сортировки
3.2 Типовые алгоритмы обработки двумерного массива Пример 5. Определить сумму и количество положительных элементов в массиве целых чисел.
Public Sub prog4()
'Описание целочисленного массива (5 строк 8 столбцов)
Dim a(1 To 5, 1 To 8) As Integer
Dim s As Integer, kol As Integer
s = 0 ‘Обнуление переменной s
kol = 0 ‘Обнуление переменной kol
For i = 1 To 5 ‘Цикл по строкам (от 1 до 5)
For j = 1 To 8 'Цикл по столбцам (от 1 до 8)
'Ввод элементов массива с листа Excel
a(i,j)=Worksheets(1).Cells(i,j)
‘Сравнение элементов массива с нулем
If a(i, j) > 0 Then
’Добавление элемента >0 к текущей сумме
s = s + a(i, j)
‘Увеличение количества элементов >0 на 1
kol = kol + 1
End If
Next j ’счетчик по j
Next i ‘счетчик по i
'Вывод результатов на лист Excel
Worksheets(1).Range("A12")= s
Worksheets(1).Range("A13")= kol
End Sub
Схемы для обращения к элементам на главной (побочной) диагоналях
|
|
---|---|
Рис. 4.1 Схема обращения к главной диагонали |
|
Рис. 4.2 Схема обращения к побочной диагонали
3.3 Типовые алгоритмы обработки динамического массива
Пример 3.6. Рассмотрим пример обработки одномерного динамического массива, в котором необходимо определить максимальный и минимальный элементы и поменять их местами.
Public Sub prog5()
Dim b() As Double ‘Описание динамического массива
'вещественных значений
Dim nom_max As Integer 'номер максимального элемента
Dim nom_min As Integer 'номер минимального элемента
Dim vs As Double ‘вспомогательная переменная
‘Ввод размерности массива вводимое значение преобразуется к целому типу)
n = CInt(InputBox("Введите размерность массива"))
ReDim b(1 To n) 'Переопределение массива
'Цикл с параметром для ввода элементов массива
For i = 1 To n
b(i) = CDbl(InputBox("Введите "& i &"-й элемент"))
Next i
'первый элемент считается максимальным и минимальным
nom_max = 1: nom_min = 1
'Начиная со второго, просматриваются все элементы
For i = 2 To n
‘Каждый элемент сравнивается с максимальным
‘на данный момент элементом: если текущий элемент
‘оказался больше максимального, то запоминается его номер
If b(i) > b(nom_max) Then nom_max = i
‘поиск минимального элемента
If b(i) < b(nom_min) Then nom_min = i
Next i
‘С помощью переменной vs меняются местами минимальный и максимальный элементы
vs = b(nom_max)
b(nom_max) = b(nom_min)
b(nom_min) = vs
‘вывод преобразованного массива
For i = 1 To n
Worksheets(1).Range("D" & i)= b(i)
Next i
End Sub