RosettaCodeData/Task/Largest-int-from-concatenated-ints/FreeBASIC/largest-int-from-concatenated-ints.basic
2023-07-01 13:44:08 -04:00

43 lines
1 KiB
Text

#define MAXDIGITS 8
function catint( a as string, b as string ) as uinteger
return valint(a+b)
end function
function grt( a as string, b as string ) as boolean
return catint(a, b)>catint(b, a)
end function
sub shellsort( a() as string )
'quick and dirty shellsort, not the focus of this exercise
dim as uinteger gap = ubound(a), i, j, n=ubound(a)
dim as string temp
do
gap = int(gap / 2.2)
for i=gap to n
temp = a(i)
j=i
while j>=gap andalso grt( a(j-gap), temp )
a(j) = a(j - gap)
j -= gap
wend
a(j) = temp
next i
loop until gap = 1
end sub
sub sort_and_print( a() as string )
dim as uinteger i
dim as string outstring = ""
shellsort(a())
for i=0 to ubound(a)
outstring = a(i)+outstring
next i
print outstring
end sub
dim as string set1(8) = {"1", "34", "3", "98", "9", "76", "45", "4"}
dim as string set2(4) = {"54", "546", "548", "60"}
sort_and_print(set1())
sort_and_print(set2())