Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 120
Благодарности: 22

Профиль | Цитировать


Код: Выделить весь код
Function ВернутьБольшееИлиМеньшееИзТрёхЧисел(ByVal ПервоеЧисло As Double, ByVal ВтороеЧисло As Double, ByVal ТретьеЧисло As Double, Optional ByVal ВернутьБольшее As Boolean = True) As Double 

Dim Result As Double 
Dim arr() As Double 
Dim i As Byte 

   ReDim arr(2) 
   arr(0) = ПервоеЧисло 
   arr(1) = ВтороеЧисло 
   arr(2) = ТретьеЧисло 
   Result = arr(0) 
   For i = 1 To UBound(arr) 
      If ВернутьБольшее Then 
         If arr(i) > arr(i - 1) Then 
            Result = arr(i) 
         End If 
      Else 
         If arr(i) < arr(i - 1) Then 
            Result = arr(i) 
         End If 
      End If 
   Next i 
   ВернутьБольшееИлиМеньшееИзТрёхЧисел = Result 
End Function 

Sub ТестНаписаннойФункции() 
Dim a As Double 
Dim b As Double 
Dim c As Double 
   'Инициализируем генератор произвольных чисел (только для теста вышеприведенной функции)
   Randomize 
   Debug.Print "Тест начат" 
   'Присвоим стартовые «рандомные» значения трём переменным
   a = Rnd() * 100 
   b = Rnd() * 100 
   c = Rnd() * 100 
   Debug.Print "Большее из чисел " & a & ", " & b & ", " & c 
   'Вызовем функцию «ВернутьБольшееИлиМеньшееИзТрёхЧисел» без 4 параметра (он опциональный, без него она возвращает БОЛЬШее значение из трёх указанных)
   Debug.Print ВернутьБольшееИлиМеньшееИзТрёхЧисел(a, b, c) 
   Debug.Print "Меньшее из чисел " & a & ", " & b & ", " & c 
   'Вызовем функцию «ВернутьБольшееИлиМеньшееИзТрёхЧисел» указав 4-ым параметром значение False, чтобы она вернула наименьшее значение из трёх указанных
   Debug.Print ВернутьБольшееИлиМеньшееИзТрёхЧисел(a, b, c, False) 
   Debug.Print "Тест завершен" 
End Sub
функция «ВернутьБольшееИлиМеньшееИзТрёхЧисел» и есть решение Вашей проблемы
первые 3 параметра числа целые или с плавающей точкой,
а четвертый параметр указывает искать большее (по-умолчанию) или меньшее (при указании четвертым параметром значения False) значение из первых трёх параметров
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:05, 30-11-2010 | #2