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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
3
Лабораторна робота № 5
Лабораторна робота № 5
Тема: розробка програми на сортування
Мета: набуття навичок з використання записів і їх обробки
Класичною ілюстрацією переваги застосування складених структур даних, зокрема, масивів є задача сортування. Під сортуванням розумітимемо процес перестановки елементів масиву в певному порядку з метою полегшення подальшого пошуку конкретного елемента. Прикладом упорядкованих елементів можуть служити телефонні книги, каталоги бібліотек і т.п. Одним з найпростіших способів сортування є метод "бульбашок". Уявімо собі, що елемент масиву, значення якого найменше переміщаються наверх і поміщається в елемент з індексом 1. В такий спосіб ми отримали масив, в якому значення першого елементу найменше, тобто впорядковане, залишилось впорядкувати решту елементів, починаючи з другого. Якщо тепер серед невпорядкованих елементів масиву знову виявити найменше значення і помістити його в елемент з індексом 2, то перші два елементи масиву вже будуть впорядкованими. Для впорядкування решти елементів можна послідовно використати цю ж схему. Отже, згідно цього алгоритму найменше значення елементу з невпорядкованої частини масиву переміщається (спливає ніби "бульбашка") в елемент з найменшим індексом. Фрагмент програмної реалізації впорядкування масиву A з n елементів може мати вигляд
For i = 2 To n
For j = n To i Step -1
If A(j - 1) > A(j) Then x = A(j - 1): A(j - 1) = A(j): A(j) = x
Next j
Next i
Оператори в частині Then умовного оператора забезпечують обмін значеннями між елементами A(j - 1) і A(j) у випадку коли значення, що в них зберігаються невпорядковані за зростанням. Для проведення цього обміну використовується допоміжна змінна х, в якій тимчасово зберігається значення елемента A(j - 1). Потреба в допоміжній змінній х зумовлена тим, що при присвоєнні елемента A(j - 1) нового значення, його попереднє значення затирається.
Наприклад, розробимо програму, яка формує масив записів з відомостями про успішність студентів, а також передбачає його сортування за алфавітним порядком прізвищ і відображає наявні записи. Нехай відомості про студента включають прізвище, імя й оцінку. Для їх компактного зберігання в області загальних оголошень визначимо тип Vidomist
Private Type Vidomist
Prizv As String * 15
Imia As String * 10
Ocinka As Integer
End Type
Масив для зберігання записів з відомостями про студентів також слід описати в області загальних оголошень форми. Робочому вікну цієї програми надамо вигляду показаного на рис. 5.1.
Дана програма при натисненні кнопки "Зберегти значення" зчитує і надає компонентам поточного елемента масиву значення задані у відповідних текстових полях після чого ці поля очищає. З кожним натисненням кнопки "Зберегти значення" формується черговий елемент масиву. Допустима їх кількість визначається розмірністю масиву. Підпрограма реакції на натиснення кнопки "Зберегти значення" проводить ще підрахунок кількості сформованих значень елементів масиву. Натиснення кнопки "Впорядкувати" сортує елементи сформованого масиву за алфавітним порядком прізвищ, а кнопка "Відобразити" відображає наявні у масиві записи в текстовому полі.
Текстовим полям, призначеним для вводу даних, надамо відповідно імена: txtPrizv, Imia й Ocinka. Описи необхідних змінних і тексти підпрограм реакції на натиснення кнопок можуть мати вигляд
Option Explicit
Dim M(100) As Vidomist
Dim N As Integer
Dim i As Integer, j As Integer
Private Sub Save_Click()
' Реакція на кнопку "Зберегти значення"
N = N + 1
M(N).Prizv = txtPrizv.Text
M(N).Imia = txtImia.Text
M(N).Ocinka = Val(txtOcinka.Text)
txtPrizv.Text = "": txtImia.Text = ""
txtOcinka.Text = ""
End Sub
Private Sub Sortuvannia_Click()
' Реакція на кнопку "Впорядкувати"
Dim b As Vidomist
For i = 2 To N
For j = N To i Step -1
If M(j).Prizv < M(j - 1).Prizv Then
b = M(j): M(j) = M(j - 1): M(j - 1) = b
End If
Next j
Next i
End Sub
Private Sub Vyvid_Click()
' Реакція на кнопку "Відобразити"
Dim U As String
U = ""
For i = 1 To N
U = U & M(i).Prizv & " " & M(i).Imia & " "
U = U & M(i).Ocinka & vbCrLf
Next i
txtVyvid.Text = U
End Sub
Підпрограма Vyvid_Click призначена для відображення наявних у масиві записів. З цих записів вона попередньо формує значення символьної змінної U, яке у вигляді окремих рядків, як показано у наведеному вище робочому вікні, відображає відомості про успішність студентів. Для означення кінця рядка і переходу на початок наступного використовується стандартна константа vbCrLf . Нагадаємо, що для забезпечення можливості відображення вмісту текстового поля в декількох рядках його властивості MultiLine слід надати значення True. В принципі можна було би відомості про студентів засилати прямо в значення властивості Text поля txtVyvid, не використовуючи змінної U. Проте постійне обновлення значення властивості Text сповільнює виконання програми і у звязку з тим розробники Visual Basic радять попередньо сформувати відповідний текст у змінній. Вигляд вікна з відсортованими відомостями подано на рис. 5.1.
Розробити програму, яка формує масив записів з відомостями згідно наведених нижче варіантів. Дана програма повинна передбачати можливість сортування записів і відображення їх складових компонент.
2.1. Варіанти завдань
Масив записів повинен зберігати список відомостей про наявність товарних одиниць, отриманих у викладача.
Рис. 5.1. Вікно програми формування відомості успішності