Надо красивый алгоритм на получение минимального из 3-х значений - VB

Формулировка задачи:

Всем привет! Есть три переменные:
Dim s1, s2, s3 As Single
По умолчанию, у каждой значение 0. Иногда, в некоторые попадает значение. Надо получить минимальное значение, но не 0. Т.е. проверить первую переменную со второй, та что останется - проверить с третьей.
If s1 < s2 And (s1 <> 0 And s2 <> 0) Then
    If s1 < s3 And s3 <> 0 Then
        Debug.Print s1
    Else
        Debug.Print s2
    End if
ElseIf s2 < s3 And (s2 <> 0 And s3 <> 0) Then
    Debug.Print s2
Else
    Debug.Print s3
End If
Куча IfElse и тут тогда похоже, что условие не срабатывает, если s1=0 и s2=0. Как все переменные между собой сравнить и взять минимум?

Код к задаче: «Надо красивый алгоритм на получение минимального из 3-х значений - VB»

textual
Function Compare(Optional ByVal exp1!, Optional ByVal exp2!, Optional ByVal exp3!, Optional r&)
    If r Then Compare = IIf(exp1 > 0 And exp1 < exp2, exp1, IIf(exp2 > 0, exp2, exp1)) Else Compare = Compare(Compare(exp1, exp2, , 1), Compare(exp1, exp3, , 1), Compare(exp2, exp3, , 1), 1)
End Function

11   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ