Найти Промежуток времени когда в музее находится наибольшее число людей - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д