Найти Промежуток времени когда в музее находится наибольшее число людей - VB
Формулировка задачи:
Ежедневно музей посещает N человек. Для каждого из них есть Время прихода и ухода. Найти Промежуток времени когда в музее находится наибольшее число людей
Я не прошу чтобы за меня вы писали код. Прошу лишь помочь мне как вобще это решить. Было у меня несколько вариантов, но они не работают. Из олимпиадчиков ее никто решил.
Решение задачи: «Найти Промежуток времени когда в музее находится наибольшее число людей»
textual
Листинг программы
Option Explicit Dim S, St As String Private Type typeVisit T As Date M As Integer End Type Private Sub Command1_Click() Dim i As Integer, j As Integer, V() As typeVisit, n As Integer Dim x As Integer, maxx As Integer, t1 As Date, t2 As Date For i = 0 To UBound(S) - 1 n = n + 2: ReDim Preserve V(1 To n) V(n - 1).T = Split(S(i))(0): V(n - 1).M = 1 V(n).T = Split(S(i))(1): V(n).M = -1 Next i SortVisitos V 'Сортируем массив For i = 1 To n x = x + V(i).M ' считаем кол-во посетителей If maxx < x Then ' определяем максимальное количество посетителей maxx = x t1 = V(i).T 'время прихода For j = i To n 'определяем время ухода If V(j).M < 0 Then t2 = V(j).T: Exit For Next j End If Next i Cls Print Replace(St, " ", vbTab) Print "Больше всего посетителей (" & maxx & ") было в период между " & t1 & " и " & t2 End Sub 'Процедура сортировки массива пользовательского типа по возрастанию по полю Т(по времени) Private Sub SortVisitos(V() As typeVisit) Dim i As Integer, j As Integer, Vis As typeVisit For i = 1 To UBound(V) For j = 1 To UBound(V) - 1 If V(j).T > V(j + 1).T Then Vis = V(j) V(j) = V(j + 1) V(j + 1) = Vis End If Next j Next i End Sub ' ''''''''''''''''''''''''''''''''''''''''' ' Дальше просто для отладки (и наглядности тоже) получение данных , ' лучше, конечно сделать получение данных из файла Private Sub Form_Load() Call GetVisitors S = Split(St, vbCrLf) End Sub Private Sub GetVisitors() AddVisitor "8:00 10:28" AddVisitor "8:01 8:13" AddVisitor "8:02 11:45" AddVisitor "8:03 9:44" AddVisitor "8:04 17:45" AddVisitor "8:05 16:33" AddVisitor "8:05 12:36" AddVisitor "8:05 11:06" AddVisitor "8:05 13:19" AddVisitor "8:05 15:02" AddVisitor "8:04 12:30" AddVisitor "8:03 11:56" AddVisitor "8:02 13:22" AddVisitor "8:02 14:53" AddVisitor "8:01 19:11" AddVisitor "8:10 14:01" AddVisitor "8:10 11:15" AddVisitor "8:00 13:27" AddVisitor "8:00 12:46" AddVisitor "9:06 9:14" AddVisitor "9:06 9:14" AddVisitor "9:06 9:14" AddVisitor "10:00 10:33" AddVisitor "8:00 8:10" AddVisitor "8:19 18:22" AddVisitor "8:55 10:21" AddVisitor "9:55 11:24" AddVisitor "9:55 11:24" End Sub Private Sub AddVisitor(ByRef NewVisitorsTime As String) St = St & NewVisitorsTime & vbCrLf End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д