Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР3.doc
Скачиваний:
3
Добавлен:
31.08.2019
Размер:
367.62 Кб
Скачать

Пример 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