Ok the following codes don't worth a Nobel Price. It's just a set of command to search the Minimum and the Maximum values of a single dimension Array or a Linked List of any numerical standard PureBasic types.
If this can be useful for someone.
Edit : Correction suggested by Stargate added
Best regards.
Guimauve
Code: Select all
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : Array Min-Max Values
; File Name : Array Min-Max Values.pb
; File version: 1.0.0
; Programming : OK
; Programmed by : Guimauve
; Date : 03-03-2012
; Last Update : 03-03-2012
; PureBasic code : 5.00
; Platform : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Procedure.b ArrayMinByteValue(Array Values.b(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MinByteValue.b = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) < MinByteValue
MinByteValue = Values(Index)
EndIf
Next
ProcedureReturn MinByteValue
EndProcedure
Procedure.b ArrayMaxByteValue(Array Values.b(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MaxByteValue.b = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) > MaxByteValue
MaxByteValue = Values(Index)
EndIf
Next
ProcedureReturn MaxByteValue
EndProcedure
Procedure.a ArrayMinAsciiValue(Array Values.a(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MinAsciiValue.a = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) < MinAsciiValue
MinAsciiValue = Values(Index)
EndIf
Next
ProcedureReturn MinAsciiValue
EndProcedure
Procedure.a ArrayMaxAsciiValue(Array Values.a(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MaxAsciiValue.a = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) > MaxAsciiValue
MaxAsciiValue = Values(Index)
EndIf
Next
ProcedureReturn MaxAsciiValue
EndProcedure
Procedure.c ArrayMinCharacterValue(Array Values.c(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MinCharacterValue.c = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) < MinCharacterValue
MinCharacterValue = Values(Index)
EndIf
Next
ProcedureReturn MinCharacterValue
EndProcedure
Procedure.c ArrayMaxCharacterValue(Array Values.c(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MaxCharacterValue.c = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) > MaxCharacterValue
MaxCharacterValue = Values(Index)
EndIf
Next
ProcedureReturn MaxCharacterValue
EndProcedure
Procedure.u ArrayMinUnicodeValue(Array Values.u(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MinUnicodeValue.u = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) < MinUnicodeValue
MinUnicodeValue = Values(Index)
EndIf
Next
ProcedureReturn MinUnicodeValue
EndProcedure
Procedure.u ArrayMaxUnicodeValue(Array Values.u(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MaxUnicodeValue.u = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) > MaxUnicodeValue
MaxUnicodeValue = Values(Index)
EndIf
Next
ProcedureReturn MaxUnicodeValue
EndProcedure
Procedure.w ArrayMinWordValue(Array Values.w(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MinWordValue.w = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) < MinWordValue
MinWordValue = Values(Index)
EndIf
Next
ProcedureReturn MinWordValue
EndProcedure
Procedure.w ArrayMaxWordValue(Array Values.w(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MaxWordValue.w = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) > MaxWordValue
MaxWordValue = Values(Index)
EndIf
Next
ProcedureReturn MaxWordValue
EndProcedure
Procedure.l ArrayMinLongValue(Array Values.l(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MinLongValue.l = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) < MinLongValue
MinLongValue = Values(Index)
EndIf
Next
ProcedureReturn MinLongValue
EndProcedure
Procedure.l ArrayMaxLongValue(Array Values.l(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MaxLongValue.l = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) > MaxLongValue
MaxLongValue = Values(Index)
EndIf
Next
ProcedureReturn MaxLongValue
EndProcedure
Procedure.i ArrayMinIntegerValue(Array Values.i(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MinIntegerValue.i = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) < MinIntegerValue
MinIntegerValue = Values(Index)
EndIf
Next
ProcedureReturn MinIntegerValue
EndProcedure
Procedure.i ArrayMaxIntegerValue(Array Values.i(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MaxIntegerValue.i = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) > MaxIntegerValue
MaxIntegerValue = Values(Index)
EndIf
Next
ProcedureReturn MaxIntegerValue
EndProcedure
Procedure.q ArrayMinQuadValue(Array Values.q(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MinQuadValue.q = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) < MinQuadValue
MinQuadValue = Values(Index)
EndIf
Next
ProcedureReturn MinQuadValue
EndProcedure
Procedure.q ArrayMaxQuadValue(Array Values.q(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MaxQuadValue.q = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) > MaxQuadValue
MaxQuadValue = Values(Index)
EndIf
Next
ProcedureReturn MaxQuadValue
EndProcedure
Procedure.f ArrayMinFloatValue(Array Values.f(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MinFloatValue.f = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) < MinFloatValue
MinFloatValue = Values(Index)
EndIf
Next
ProcedureReturn MinFloatValue
EndProcedure
Procedure.f ArrayMaxFloatValue(Array Values.f(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MaxFloatValue.f = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) > MaxFloatValue
MaxFloatValue = Values(Index)
EndIf
Next
ProcedureReturn MaxFloatValue
EndProcedure
Procedure.d ArrayMinDoubleValue(Array Values.d(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MinDoubleValue.d = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) < MinDoubleValue
MinDoubleValue = Values(Index)
EndIf
Next
ProcedureReturn MinDoubleValue
EndProcedure
Procedure.d ArrayMaxDoubleValue(Array Values.d(1))
Protected ArraySizeMax.l = ArraySize(Values(), 1)
Protected Index.l
Protected MaxDoubleValue.d = Values(0)
For Index = 1 To ArraySizeMax
If Values(Index) > MaxDoubleValue
MaxDoubleValue = Values(Index)
EndIf
Next
ProcedureReturn MaxDoubleValue
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< !!! WARNING - YOU ARE NOW IN A TESTING ZONE - WARNING !!! <<<<<
; <<<<< !!! WARNING - THIS CODE SHOULD BE COMMENTED - WARNING !!! <<<<<
; <<<<< !!! WARNING - BEFORE THE FINAL COMPILATION. - WARNING !!! <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Dim LongValues.l(10)
Dim DoubleValues.d(10)
For Index = 0 To 10
LongValues(Index) = Random(999)
DoubleValues(Index) = Random(15) * #PI
Debug RSet(Str(LongValues(Index)), 3, "0") + " | " + RSet(StrD(DoubleValues(Index), 4), 7, "0")
Next
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Max and Min Values
Debug "Long (Min | Max) = " + RSet(Str(ArrayMinLongValue(LongValues())), 3, "0") + " | " + RSet(Str(ArrayMaxLongValue(LongValues())), 3, "0")
Debug "Double (Min | Max) = " + RSet(StrD(ArrayMinDoubleValue(DoubleValues()), 4), 7, "0") + " | " + RSet(StrD(ArrayMaxDoubleValue(DoubleValues()), 4), 7, "0")
; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<
Code: Select all
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : List Min-Max Values
; File Name : List Min-Max Values.pb
; File version: 1.0.0
; Programming : OK
; Programmed by : Guimauve
; Date : 03-03-2012
; Last Update : 03-03-2012
; PureBasic code : 5.00
; Platform : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Procedure.b ListMinByteValue(List Values.b())
If FirstElement(Values())
Protected MinByteValue.b = Values()
EndIf
ForEach Values()
If Values() < MinByteValue
MinByteValue = Values()
EndIf
Next
ProcedureReturn MinByteValue
EndProcedure
Procedure.b ListMaxByteValue(List Values.b())
If FirstElement(Values())
Protected MaxByteValue.b = Values()
EndIf
ForEach Values()
If Values() > MaxByteValue
MaxByteValue = Values()
EndIf
Next
ProcedureReturn MaxByteValue
EndProcedure
Procedure.a ListMinAsciiValue(List Values.a())
If FirstElement(Values())
Protected MinAsciiValue.a = Values()
EndIf
ForEach Values()
If Values() < MinAsciiValue
MinAsciiValue = Values()
EndIf
Next
ProcedureReturn MinAsciiValue
EndProcedure
Procedure.a ListMaxAsciiValue(List Values.a())
If FirstElement(Values())
Protected MaxAsciiValue.a = Values()
EndIf
ForEach Values()
If Values() > MaxAsciiValue
MaxAsciiValue = Values()
EndIf
Next
ProcedureReturn MaxAsciiValue
EndProcedure
Procedure.c ListMinCharacterValue(List Values.c())
If FirstElement(Values())
Protected MinCharacterValue.c = Values()
EndIf
ForEach Values()
If Values() < MinCharacterValue
MinCharacterValue = Values()
EndIf
Next
ProcedureReturn MinCharacterValue
EndProcedure
Procedure.c ListMaxCharacterValue(List Values.c())
If FirstElement(Values())
Protected MaxCharacterValue.c = Values()
EndIf
ForEach Values()
If Values() > MaxCharacterValue
MaxCharacterValue = Values()
EndIf
Next
ProcedureReturn MaxCharacterValue
EndProcedure
Procedure.u ListMinUnicodeValue(List Values.u())
If FirstElement(Values())
Protected MinUnicodeValue.u = Values()
EndIf
ForEach Values()
If Values() < MinUnicodeValue
MinUnicodeValue = Values()
EndIf
Next
ProcedureReturn MinUnicodeValue
EndProcedure
Procedure.u ListMaxUnicodeValue(List Values.u())
If FirstElement(Values())
Protected MaxUnicodeValue.u = Values()
EndIf
ForEach Values()
If Values() > MaxUnicodeValue
MaxUnicodeValue = Values()
EndIf
Next
ProcedureReturn MaxUnicodeValue
EndProcedure
Procedure.w ListMinWordValue(List Values.w())
If FirstElement(Values())
Protected MinWordValue.w = Values()
EndIf
ForEach Values()
If Values() < MinWordValue
MinWordValue = Values()
EndIf
Next
ProcedureReturn MinWordValue
EndProcedure
Procedure.w ListMaxWordValue(List Values.w())
If FirstElement(Values())
Protected MaxWordValue.w = Values()
EndIf
ForEach Values()
If Values() > MaxWordValue
MaxWordValue = Values()
EndIf
Next
ProcedureReturn MaxWordValue
EndProcedure
Procedure.l ListMinLongValue(List Values.l())
If FirstElement(Values())
Protected MinLongValue.l = Values()
EndIf
ForEach Values()
If Values() < MinLongValue
MinLongValue = Values()
EndIf
Next
ProcedureReturn MinLongValue
EndProcedure
Procedure.l ListMaxLongValue(List Values.l())
If FirstElement(Values())
Protected MaxLongValue.l = Values()
EndIf
ForEach Values()
If Values() > MaxLongValue
MaxLongValue = Values()
EndIf
Next
ProcedureReturn MaxLongValue
EndProcedure
Procedure.i ListMinIntegerValue(List Values.i())
If FirstElement(Values())
Protected MinIntegerValue.i = Values()
EndIf
ForEach Values()
If Values() < MinIntegerValue
MinIntegerValue = Values()
EndIf
Next
ProcedureReturn MinIntegerValue
EndProcedure
Procedure.i ListMaxIntegerValue(List Values.i())
If FirstElement(Values())
Protected MaxIntegerValue.i = Values()
EndIf
ForEach Values()
If Values() > MaxIntegerValue
MaxIntegerValue = Values()
EndIf
Next
ProcedureReturn MaxIntegerValue
EndProcedure
Procedure.q ListMinQuadValue(List Values.q())
If FirstElement(Values())
Protected MinQuadValue.q = Values()
EndIf
ForEach Values()
If Values() < MinQuadValue
MinQuadValue = Values()
EndIf
Next
ProcedureReturn MinQuadValue
EndProcedure
Procedure.q ListMaxQuadValue(List Values.q())
If FirstElement(Values())
Protected MaxQuadValue.q = Values()
EndIf
ForEach Values()
If Values() > MaxQuadValue
MaxQuadValue = Values()
EndIf
Next
ProcedureReturn MaxQuadValue
EndProcedure
Procedure.f ListMinFloatValue(List Values.f())
If FirstElement(Values())
Protected MinFloatValue.f = Values()
EndIf
ForEach Values()
If Values() < MinFloatValue
MinFloatValue = Values()
EndIf
Next
ProcedureReturn MinFloatValue
EndProcedure
Procedure.f ListMaxFloatValue(List Values.f())
If FirstElement(Values())
Protected MaxFloatValue.f = Values()
EndIf
ForEach Values()
If Values() > MaxFloatValue
MaxFloatValue = Values()
EndIf
Next
ProcedureReturn MaxFloatValue
EndProcedure
Procedure.d ListMinDoubleValue(List Values.d())
If FirstElement(Values())
Protected MinDoubleValue.d = Values()
EndIf
ForEach Values()
If Values() < MinDoubleValue
MinDoubleValue = Values()
EndIf
Next
ProcedureReturn MinDoubleValue
EndProcedure
Procedure.d ListMaxDoubleValue(List Values.d())
If FirstElement(Values())
Protected MaxDoubleValue.d = Values()
EndIf
ForEach Values()
If Values() > MaxDoubleValue
MaxDoubleValue = Values()
EndIf
Next
ProcedureReturn MaxDoubleValue
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< !!! WARNING - YOU ARE NOW IN A TESTING ZONE - WARNING !!! <<<<<
; <<<<< !!! WARNING - THIS CODE SHOULD BE COMMENTED - WARNING !!! <<<<<
; <<<<< !!! WARNING - BEFORE THE FINAL COMPILATION. - WARNING !!! <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
NewList LongValues.l()
NewList DoubleValues.d()
For Index = 0 To 10
AddElement(LongValues())
LongValues() = Random(999)
AddElement(DoubleValues())
DoubleValues() = Random(15) * #PI
Debug RSet(Str(LongValues()), 3, "0") + " | " + RSet(StrD(DoubleValues(), 4), 7, "0")
Next
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Max and Min Values
Debug "Long (Min | Max) = " + RSet(Str(ListMinLongValue(LongValues())), 3, "0") + " | " + RSet(Str(ListMaxLongValue(LongValues())), 3, "0")
Debug "Double (Min | Max) = " + RSet(StrD(ListMinDoubleValue(DoubleValues()), 4), 7, "0") + " | " + RSet(StrD(ListMaxDoubleValue(DoubleValues()), 4), 7, "0")
; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<