Could someone help me with some code for the following problem.
I've 10 String gadgets where the user enters numbers between 1 & 99, when the numbers have been entered I need an output stating
String 1 has 8 greater 1 equal 1 lower
String 2 has 5 greater 3 equal 2 lower
ect
Thanks in advance
String Gadget sorting
Code: Select all
OpenWindow(0, 0, 0, 400, 265, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "")
CreateGadgetList(WindowID())
Dim StringGadgets.l(9)
Dim Labels.l(9)
For I = 0 To 9
StringGadgets(I) = StringGadget(#PB_Any, 10, 10 + I * 25, 100, 20, "")
Labels(I) = TextGadget(#PB_Any, 120, 13 + I * 25, 200, 20, "")
Next
Procedure Calculate()
Greater.l
Equal.l
Lower.l
SlowVal.l
FastVal.l
For I = 0 To 9
SlowVal = Val(GetGadgetText(StringGadgets(I)))
Greater = 0
Equal = 0
Lower = 0
For J = 0 To 9
If J <> I
FastVal = Val(GetGadgetText(StringGadgets(J)))
If FastVal < SlowVal
Lower + 1
ElseIf FastVal > SlowVal
Greater + 1
Else
Equal + 1
EndIf
EndIf
Next
SetGadgetText(Labels(I), Str(Greater) + " greater, " + Str(Equal) + " equal and " + Str(Lower) + " lower.")
Next
EndProcedure
Procedure.l EventOurGadgets(id)
For I = 0 To 9
If id = StringGadgets(I)
ProcedureReturn 1
EndIf
Next
ProcedureReturn 0
EndProcedure
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
If EventOurGadgets(EventGadgetID())
Calculate()
EndIf
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
Hi Trond,
Sorry to be a pain your'e code works great, I've tryed and failed to add the next bit could you help please
I need to add next the number of times a number has another with 10 of it
lower.
ie
string 1=50 (between 50 and 40=1)
string 2=45 (between 45 and 35=1)
string 3=35 (between 35 and 25=0)
string 4=55 (between 55 and 45=2)
Rik
Sorry to be a pain your'e code works great, I've tryed and failed to add the next bit could you help please
I need to add next the number of times a number has another with 10 of it
lower.
ie
string 1=50 (between 50 and 40=1)
string 2=45 (between 45 and 35=1)
string 3=35 (between 35 and 25=0)
string 4=55 (between 55 and 45=2)
Rik
Code: Select all
OpenWindow(0, 0, 0, 400, 265, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "")
CreateGadgetList(WindowID())
Dim StringGadgets.l(9)
Dim Labels.l(9)
For I = 0 To 9
StringGadgets(I) = StringGadget(#PB_Any, 10, 10 + I * 25, 100, 20, "")
Labels(I) = TextGadget(#PB_Any, 120, 13 + I * 25, 290, 20, "")
Next
Procedure Calculate()
Greater.l
Equal.l
Lower.l
SlowVal.l
FastVal.l
WithinTen.l
For I = 0 To 9
SlowVal = Val(GetGadgetText(StringGadgets(I)))
Greater = 0
Equal = 0
Lower = 0
WithinTen = 0
For J = 0 To 9
If J <> I
FastVal = Val(GetGadgetText(StringGadgets(J)))
;Lower, equal or higher
If FastVal < SlowVal
Lower + 1
ElseIf FastVal > SlowVal
Greater + 1
Else
Equal + 1
EndIf
;Inside 10 lower
;Or: If FastVal <= SlowVal And FastVal > SlowVal-10 depending on what you meant
If FastVal < SlowVal And FastVal >= SlowVal-10
WithinTen + 1
EndIf
EndIf
Next
SetGadgetText(Labels(I), Str(Greater) + " greater, " + Str(Equal) + " equal and " + Str(Lower) + " lower.")
SetGadgetText(Labels(I), GetGadgetText(Labels(I)) + " Between " + Str(SlowVal) + " and " + Str(SlowVal-10) + ": " + Str(WithinTen) + ".")
Next
EndProcedure
Procedure.l EventOurGadgets(id)
For I = 0 To 9
If id = StringGadgets(I)
ProcedureReturn 1
EndIf
Next
ProcedureReturn 0
EndProcedure
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
If EventOurGadgets(EventGadgetID())
Calculate()
EndIf
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver

