Вычислить функцию с неопределенным числом параметров - VB
Формулировка задачи:
Требуется вычислить функцию y = max(a, b, c, ... ) где a, b, c, ... - целые числа
а y - максимальное из этих чисел. Причем некоторые числа могут быть
заданы в явном виде (например вместо "a" может стоять 11). Кроме того
число параметров (чисел) есть величина неопределенная.
Логика, размышления и решение:
Например в языке Си есть такое понятие как "перегрузка функций".
В Бейсике этого нет, однако и он не лаптем щи хлебает.
Нам ли сыновьям славного Бейсика уступить выскочке Си!
Я подумал:
а почему бы не подсунуть Бейсику Троянского коня. Суть дела
опирается на следующую аксиому (формулировка великого gehh).
Аксиома: Строковая переменная заменит 1000 параметров.
в самом деле, если ввести x$="a b c d e", то будут и волки сыты и
овцы целы. Один параметр заменяет все!!
Следующая программа решает эту задачу
Успехов вам всем!
Решение задачи: «Вычислить функцию с неопределенным числом параметров»
textual
Листинг программы
Private Sub Form_Load()
Dim Max11 As Long, Max12 As String
Max11 = Max1(Array(1, 5, 3, 7, 8, 6, 5))
Max12 = Max2(Array("a", "v", "z", "w"))
End Sub
' Так быстрее
Private Function Max1(v As Variant) As Variant
Dim x As Variant, i As Long
For Each x In v
If i Then
If x > Max1 Then Max1 = x
Else: Max1 = x: i = True
End If
Next
End Function
Private Function Max2(v As Variant) As Variant
Dim i As Long
For i = 0 To UBound(v)
If i Then
If v(i) > Max2 Then Max2 = v(i)
Else: Max2 = v(i)
End If
Next
End Function