Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания по информатике- практика.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
610.82 Кб
Скачать

Задание № 9. Процедура-подпрограмма Сортировки Sub с использованием рамки Frame и переключателей OptionButton

Постановка задачи

Разработать программу Сортировки Sub с предварительным выбора типа сортировки.

Для процедуры сортировки Sub Sort() сделать блок-схему алгоритма.

Разработка интерфейса

По сравнению с обычным интерфейсом добавить на форму два новых элемента управления: Frame1, OptionButton1 и OptionButton2

Объект

Свойство

Установленное значение

Frame1

Caption

Тип сортировки:

OptionButton1

Имя

optVos

Value

True

Caption

по возрастанию

OptionButton2

Имя

optUbi

Caption

по убыванию


Написание программного кода

Основная программа:

Private Sub cmdSort_Click()

Dim i As Integer, N As Integer, optB1 As Boolean

Dim A() As Single, rez As String

' переменной N присваиваем значение размерности массива, введенное

' в текстовое поле txtN:

N = Val(txtN.Text)

ReDim A(N) As Single ' переобъявляем массив A(), т. к. известен его размер N

txtRez = "": rez = "" ' чистим поле txtRez и переменную rez

' в переменной rez формируем вывод данных:

rez = rez & " ИСХОДНЫЙ МАССИВ:" & vbCrLf & vbCrLf

For i = 1 To N ' начала цикла для ввода элементов массива А(i)

A(i) = Int(Rnd * 100) + 1 ‘ генерируем случайные числа в диапазоне 1 до 100

' с помощью функции InputBox() - окна ввода:

' A(i) = InputBox("Введите элемент A(" & i & ")", "Ввод массива A(" & N & ")")

rez = rez & "A(" & i & ")= " & A(i) & Space(4)

Next i ' конец цикла по i

rez = rez & vbCrLf & vbCrLf

txtRez = rez ' вывод исходных данных

If optVoz Then optB1 = True Else optB1 = False ‘ optB1 принимает True, если выбран

‘ переключатель optVoz – по возрастанию

Sort A(), optB1 ‘ обращение к процедуре Sort()

rez = rez & "МАССИВ ПОСЛЕ СОРТИРОВКИ:" & vbCrLf & vbCrLf

For i = 1 To N

rez = rez & A(i) & " " ‘ запоминаем отсортированный массив

Next i

txtRez = rez ' вывод результатов расчетов

End Sub

Программа процедуры Сортировки

Выполните команду InsertProcedure. В диалоговом окне Add Procedure отметьте Sub, задайте Name (Имя) Sort и для этой процедуры напишите следующий код (начните с перечисления формальных параметров в скобках с заданием их типов за именем процедуры!):

Public Sub Sort(B() As Single, opt1 As Boolean)

Dim i As Integer, boo As Boolean, N As Integer

N = UBound(B) – 1 ‘ функция UBound() по имени массива определяет количество

‘ элементов в массиве (bound – граница, предел)

Do

boo = True

For i = 1 To N ' по возрастанию /убыванию

If opt1 = True Then

If B(i) > B(i + 1) Then S = B(i + 1): B(i + 1) = B(i): B(i) = S: boo = False

Else

If B(i) < B(i + 1) Then S = B(i + 1): B(i + 1) = B(i): B(i) = S: boo = False

End If

Next i

N = N - 1

Loop Until boo

End Sub

18