Сравнить три даты и вывести две наибольшие

Wruik

Добрый день, уважаемые программисты. Посоветуйте пожалуйста касательно задачи ниже: Необходимо написать подпрограмму, которая принимает три даты, определяет и возвращает две даты, которые больше (или равны) третьей. Также напишите пример вызова этой подпрограммы.Была у нас задача со сравнением трех дат и выводом одной - с ней справился. А по поводу этой есть мысль сделать сравнение дат циклом, и записывать одну в другую. Но воплощая в код как-то все попытки оказались не рабочими. Как еще можно это осуществить?
6 ответов

Wruik

        Dim D As New List(Of Date)
        D.Add("12.04.1990")
        D.Add("17.04.2003")
        D.Add("08.12.1999")
 
        D.Sort()
        D.Reverse()
        MsgBox(String.Join(vbCrLf, (From Dt As String In D).Take(2).ToArray))


Wruik

Спасибо, но мы не проходили еще видимо многое из Вашего варианта. что то вроде кода ниже, но как его продолжить?
Sub main()
        Dim dtmA, dtmB, dtmC As Date
        Console.WriteLine("введите 3 даты")
        dtmA = Console.ReadLine
        dtmB = Console.ReadLine
        dtmC = Console.ReadLine
        MsgBox(Firstbigdata(dtmA, dtmB, dtmC))
        Console.ReadLine()
        MsgBox(secondbigdata(dtmA, dtmB, dtmC))
        Console.ReadLine()
    End Sub
    Public Function Firstbigdata(ByRef dtmA As Date, dtmB As Date, dtmC As Date) As Date
        If dtmA > dtmB And dtmA > dtmC Then
        ElseIf dtmB > dtmA And dtmB > dtmC Then
        ElseIf dtmC > dtmA And dtmC > dtmB Then
        End If


Wruik

Глядя в Ваш код, я боюсь, что все, что я могу предложить - Вы не проходили


Wruik

Мы только изучаем азы, а это упражнение на написание подпрограммы. Мы прошли уже циклы, функции и процедуры, но в Вашем коде некоторые элементы для меня еще не известны. Но Все равно спасибо.


Wruik

Wruik, Можно обычной пузырьковой сортировкой и массивами сделать Сортировка
Public Sub Find(ByRef array As Date())
        For i As Integer = 0 To array.Length - 1
            For j As Integer = i + 1 To array.Length - 1
                If array(i) < array(j) Then
                    Dim boof As Date = array(i)
                    array(i) = array(j)
                    array(j) = boof
                End If
            Next
        Next
    End Sub
Вызов
Dim array As Date() = {New Date(1744, 10, 1),
                                     New Date(1824, 6, 2),
                                     New Date(1324, 3, 6),
                                     New Date(1953, 8, 3),
                                     New Date(1536, 6, 6)}
        Find(array)
        MsgBox(String.Format("Date-1: {0}, Date-2: {1}", array(0), array(1)))
Вывод
Date-1: 03.08.1953 0:00:00, Date-2: 02.06.1824 0:00:00


Wruik

Dim df As New List(Of Date)
df.Add(New Date(2010, 4, 21))
df.Add(New Date(2010, 4, 22))
df.Add(New Date(2015, 5, 21))
MessageBox.Show("Минимум :" & df.Min)
MessageBox.Show("Мaксимум :" & df.Max)
Сорри, не понял вопрос