## Recommended Posts

I have taken Jeremy Landes' _Max & _Min and improved them to compare up to 20 numbers

Test code

```Local \$nmax =_Max2(5,5,7,9,3,17,-1,3)
ConsoleWrite('@@ Debug(1) : \$nmax = ' & \$nmax & @LF);### Debug Console
Local \$nmin =_Min2(5,5,7,9,3,17,-1,3)
ConsoleWrite('@@ Debug(1) : \$nmax = ' & \$nmin & @LF);### Debug Console```

And the code itself...

```; _Max2                     Extends _Max to work with up to 20 numbers
Func _Max2(\$n01,\$n02,\$n03='',\$n04='',\$n05='',\$n06='',\$n07='',\$n08='',\$n09='',\$n012='',\$n013='',\$n014='',\$n015='',\$n016='',\$n017='',\$n018='',\$n019='',\$n020='')
If (Not IsNumber(\$n01)) Then
SetError(1)
Return (0)
EndIf
If (Not IsNumber(\$n02)) Then
SetError(2)
Return (0)
EndIf
;
Local \$Res=\$n01
Local \$idx
Local \$Val
Local \$Num
Local \$Nam
;
For \$idx=2 To 20
If \$idx<9 Then
\$Nam='n0'&\$idx
Else
\$Nam='n'&\$idx
EndIf
\$Num=Eval(\$Nam)
If IsNumber(\$Num) Then
If \$Num>\$Res Then \$Res=\$Num
Else
ExitLoop
EndIf
Next
Return \$Res
EndFunc ;==>_Max2
; _Min2                     Extends _Min to work with up to 20 numbers
Func _Min2(\$n01,\$n02,\$n03='',\$n04='',\$n05='',\$n06='',\$n07='',\$n08='',\$n09='',\$n012='',\$n013='',\$n014='',\$n015='',\$n016='',\$n017='',\$n018='',\$n019='',\$n020='')
If (Not IsNumber(\$n01)) Then
SetError(1)
Return (0)
EndIf
If (Not IsNumber(\$n02)) Then
SetError(2)
Return (0)
EndIf
;
Local \$Res=\$n01
Local \$idx
Local \$Val
Local \$Num
Local \$Nam
;
For \$idx=2 To 20
If \$idx<9 Then
\$Nam='n0'&\$idx
Else
\$Nam='n'&\$idx
EndIf
\$Num=Eval(\$Nam)
If IsNumber(\$Num) Then
If \$Num<\$Res Then \$Res=\$Num
Else
ExitLoop
EndIf
Next
Return \$Res
EndFunc ;==>_Min2```
Edited by andyswarbs

##### Share on other sites

Thought you might find this usefull also

returns the Min or Max number from 1 or 2 arrays

Test

```Local \$Array1 = [3, 2, 8, 5, 10]
Local \$Array2 = ["3", "02", "8", "1", "20"]
Local \$Array3 = ["3", "02", "8", "-1", "11"]
Local \$Max, \$Min

\$Max = _MinMaxa(\$Array1, 1)
If Not @error Then
ConsoleWrite('@@ Debug(1) :\$Max = ' & \$Max & @LF)
Else
ConsoleWrite('@@ Debug(1) :Error = ' & @error & @LF)
EndIf

\$Max = _MinMaxa(\$Array2, 1)
If Not @error Then
ConsoleWrite('@@ Debug(1) :\$Max = ' & \$Max & @LF)
Else
ConsoleWrite('@@ Debug(1) :Error = ' & @error & @LF)
EndIf

\$Max = _MinMaxa(\$Array1, 1, \$Array3)
If Not @error Then
ConsoleWrite('@@ Debug(1) :\$Max = ' & \$Max & @LF)
Else
ConsoleWrite('@@ Debug(1) :Error = ' & @error & @LF)
EndIf

\$Min = _MinMaxa(\$Array1)
If Not @error Then
ConsoleWrite('@@ Debug(1) :\$Min = ' & \$Min & @LF)
Else
ConsoleWrite('@@ Debug(1) :Error = ' & @error & @LF)
EndIf

\$Min = _MinMaxa(\$Array2)
If Not @error Then
ConsoleWrite('@@ Debug(1) :\$Min = ' & \$Min & @LF)
Else
ConsoleWrite('@@ Debug(1) :Error = ' & @error & @LF)
EndIf

\$Min = _MinMaxa(\$Array1, 0, \$Array3)
If Not @error Then
ConsoleWrite('@@ Debug(1) :\$Min = ' & \$Min & @LF)
Else
ConsoleWrite('@@ Debug(1) :Error = ' & @error & @LF)
EndIf```

```#include <Array.au3>
; return min or max number from 1 or 2 arrays
Func _MinMaxa(\$a_nums01, \$MaxFlag = 0, \$a_nums02 = 0)
If Not IsArray(\$a_nums01) Then
SetError(1)
Return (0)
EndIf
If @NumParams = 3 Then
If Not IsArray(\$a_nums02) Then
SetError(3)
Return (0)
EndIf
EndIf
;
Local \$idx
;
For \$idx = 0 To UBound(\$a_nums01) - 1
If StringIsFloat(\$a_nums01[\$idx]) Or StringIsInt(\$a_nums01[\$idx]) Then
\$a_nums01[\$idx] = Number(\$a_nums01[\$idx])
Else
SetError(2)
Return (0)
EndIf
Next
_ArraySort(\$a_nums01, \$MaxFlag)
If @NumParams = 3 Then
For \$idx = 0 To UBound(\$a_nums02) - 1
If StringIsFloat(\$a_nums02[\$idx]) Or StringIsInt(\$a_nums02[\$idx]) Then
\$a_nums02[\$idx] = Number(\$a_nums02[\$idx])
Else
SetError(4)
Return (0)
EndIf
Next
_ArraySort(\$a_nums02, \$MaxFlag)
If \$MaxFlag Then
If Number(\$a_nums01) > Number(\$a_nums02) Then
Return \$a_nums01
Else
Return \$a_nums02
EndIf
Else
If Number(\$a_nums01) < Number(\$a_nums02) Then
Return \$a_nums01
Else
Return \$a_nums02
EndIf
EndIf
EndIf
Return \$a_nums01
EndFunc  ;==>_MinMaxa```

Don't argue with an idiot; people watching may not be able to tell the difference.

## Create an account

Register a new account

• ### Recently Browsing   0 members

×

• Wiki

• Back

• #### Beta

• Git
• FAQ
• Our Picks
×
• Create New...