DimP - Many ProcedurParameter (max 16) used as Array
Posted: Mon Jan 05, 2009 1:47 am
Hi,
every now and then I took Procedure, which no specific number of parameters, but only many of the same variety.
So I try to write a generalization, which consist of many undetermined parameters produced an array:
Syntax
largest number
Strings combine
Array produce and fill
Random Percent Earnings
every now and then I took Procedure, which no specific number of parameters, but only many of the same variety.
So I try to write a generalization, which consist of many undetermined parameters produced an array:
Code: Select all
Macro _O_ : ( : EndMacro
Macro _C_ : ) : EndMacro
Macro MacroRepeat2(F,B)
F#0#B,F#1#B,F#2#B,F#3#B,F#4#B,F#5#B,F#6#B,F#7#B, F#8#B,F#9#B,F#10#B,F#11#B,F#12#B,F#13#B,F#14#B,F#15#B
EndMacro
Macro MacroRepeat3(F,M,B)
F#0#M#0#B:F#1#M#1#B:F#2#M#2#B:F#3#M#3#B:F#4#M#4#B:F#5#M#5#B:F#6#M#6#B:F#7#M#7#B:F#8#M#8#B: F#9#M#9#B:F#10#M#10#B:F#11#M#11#B:F#12#M#12#B:F#13#M#13#B:F#14#M#14#B:F#15#M#15#B
EndMacro
Macro DimP(Parameter, DefaultValue)
MacroRepeat2(Nr,_#Parameter=DefaultValue) )
Dim Parameter(15)
MacroRepeat3(Parameter# _O_, _C_ =Nr, _#Parameter)
Defined(0,0
EndMacro
Now asks you determine how to DimP() now applies, so here are a few examples:DimP(Parameter, DefaultValue)
Parameter
Name (type) of the parameter, which then later as an array (with 16 boxes 0-15) exists.
DefaultValue
Value with which all parameters are filled, if they are not used.
largest number
Code: Select all
Procedure.f Max(DimP(Zahl.f,-1e38))
Protected Max.f = -1e38
For n = 0 To 15
If Zahl(n) > Max
Max = Zahl(n)
EndIf
Next
ProcedureReturn Max
EndProcedure
Debug Max(-120, -23)
Debug Max(293, 234, 34, 34)
Debug Max(1.0,0.2,1.001,0.99)
Strings combine
Code: Select all
Procedure.s Connect(Combine.s, DimP(String.s,""))
Protected String.s = String(0)
For n = 1 To 15
If String(n)
String.s + Combine + String(n)
EndIf
Next
ProcedureReturn String
EndProcedure
Debug Connect("...", "That", "is", "cool")
Array produce and fill
Code: Select all
Macro FillArray(ArrayToFill, DimP(Long,0))
Dim ArrayToFill(15)
For n = 0 To 15
ArrayToFill(n) = Long(n)
Next
EndMacro
FillArray(MyArray, 128,255,64,9)
For n = 0 To 15
Debug MyArray(n)
Next
Random Percent Earnings
Code: Select all
Procedure SpecialRandom(DimP(Percent, 0))
Protected Random = Random(99)
Protected Delta, n
For n = 0 To 15
If Random < Delta+Percent(n)
ProcedureReturn n+1
EndIf
Delta + Percent(n)
Next
ProcedureReturn 0
EndProcedure
Dim Test1(3)
For n = 1 To 10000
Number = SpecialRandom(60,20,15)
Test1(Number) + 1
Next
Debug "no Number :"+Str(Test1(0))
Debug "Number 1 :"+Str(Test1(1))
Debug "Number 2 :"+Str(Test1(2))
Debug "Number 3 :"+Str(Test1(3))