Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

DarkBASIC Professional Discussion / Help with Sorting Driver Laptimes using Sort Array or alternative ?

Author
Message
DemonHill
18
Years of Service
User Offline
Joined: 20th Mar 2008
Location:
Posted: 30th May 2014 23:07
Hi, trying to write code to sort Racing Drivers and Laptimes after each lap.
i.e.
Button McLaren 1:25.00
Hamilton Mercedes 1:25.34
Etc.
I know I need to use something like….

type laptime_t
Name as string
Score as integer
Endtype

And use an array……

dim Laptime(9) as Laptime_t

and …

Laptime(9).Name = DriverName$
Laptime(9).Score = DriverLapTime
sort array Laptime(), -2 ` Sort into descending score order

But I am struggling to understand how to include in a loop, assuming in this case there are 10 drivers.
After each lap I need the driver order to be sorted, and also match drivers to their teams in a print out. Help really appreciated.
DemonHill
18
Years of Service
User Offline
Joined: 20th Mar 2008
Location:
Posted: 31st May 2014 00:14
Figured it out.... just can't work out how to sort in ascending order as I want smallest time first.

Rem ***** Included Source File *****
Rem Project: Dark Basic Pro Project
Rem Created: Friday, May 30, 2014

Rem ***** Main Source File *****
Type laptime_t
Name as string
Time as integer
Team as string
Endtype


dim Laptime(9) as Laptime_t

Laptime(0).Name = "Button"
Laptime(0).Time = 1234
Laptime(0).Team = "McLaren"
Laptime(1).Name = "Hill"
Laptime(1).Time = 2000
Laptime(1).Team = "Williams"
Laptime(2).Name = "Prost"
Laptime(2).Time = 1256
Laptime(2).Team = "Renault"
Laptime(3).Name = "Massa"
Laptime(3).Time = 3000
Laptime(3).Team = "Ferrari"
Laptime(4).Name = "Alonso"
Laptime(4).Time = 1000
Laptime(4).Team = "Ferrari"
Laptime(5).Name = "Hamilton"
Laptime(5).Time = 2100
Laptime(5).Team = "Mercedes"
Laptime(6).Name = "Vettel"
Laptime(6).Time = 900
Laptime(6).Team = "RedBull"
Laptime(7).Name = "Webber"
Laptime(7).Time = 2600
Laptime(7).Team = "RedBull"
Laptime(8).Name = "Mansell"
Laptime(8).Time = 1300
Laptime(8).Team = "Willaims"
Laptime(9).Name = "Herbert"
Laptime(9).Time = 2700
Laptime(9).Team = "Lotus"


Sort Array Laptime(), -2 ` Sort into descending score order

Display_x_pos=10
Display_y_pos=10

For Pos_n=0 to 9
Text Display_x_pos,Display_y_pos,""+ Laptime(Pos_n).Name
Text Display_x_pos+90,Display_y_pos,""+LEFT$(Laptime(Pos_n).Team,3) // Limits team name to 3 characters i.e. MCL
Text Display_x_pos+170,Display_y_pos,""+ STR$(Laptime(Pos_n).Time)

Display_y_pos=Display_y_pos+10

Next Pos_n



Wait key

Do


LOOP

End
Green Gandalf
VIP Member
21
Years of Service
User Offline
Joined: 3rd Jan 2005
Playing: Malevolence:Sword of Ahkranox, Skyrim, Civ6.
Posted: 31st May 2014 23:50
Not sure what the problem is. The Help says:

Quote: "If the field is specified as a negative number, the field will be sorted in reverse sequence."


So why not use a positive number?



Powered by Free Banners
DemonHill
18
Years of Service
User Offline
Joined: 20th Mar 2008
Location:
Posted: 1st Jun 2014 10:07
LOL thx, tried that just after I posted and guess what , it worked cheers

Login to post a reply

Server time is: 2026-07-05 16:06:16
Your offset time is: 2026-07-05 16:06:16