Swapping array elements
#8
@PhilOfPerth

Quote:But if I don't use the SWAP function, I can just do this:
Code: (Select All)
a$ = "ABCDEFG"
Print a$
t1$ = Mid$(a$, 3, 1): t2$ = Mid$(a$, 5, 1)
Mid$(a$, 3, 1) = t2$: Mid$(a$, 5, 1) = t1$
Print a$

It introduces two new variables, but that's ok in my case.


Actually, you only need to introduce one new temp var:
Code: (Select All)
t1$ = Mid$(a$, 3, 1)
Mid$(a$, 3, 1) = Mid$(a$, 5, 1)
Mid$(a$, 5, 1) = t1$

Off the top of my head I don't see a way to swap characters within a single string without some old-fashioned Varptr/Peek/Poke shenanigans, and I don't know how easy that would be to pull off in QB64.


Anyway, here's a slight mod to your original code snippet:
Code: (Select All)
Screen 9
_FullScreen

a$ = "ABCDEFG"
Print Mid$(a$, 3, 1), Mid$(a$, 5, 1)

'The fourth parameter allows you to swap more than one character at a time:
myswap a$, 3, 5, 1 ' swap mid$(a$,3,1),mid$(a$,5,1)
'Below is the swapping code for inline use, if desired.
't$ = Mid$(a$, 3, 1): Mid$(a$, 3, 1) = Mid$(a$, 5, 1): Mid$(a$, 5, 1) = t$

Print a$


Sub myswap (s$, e1, e2, l)
    t$ = Mid$(s$, e1, l)
    Mid$(s$, e1, l) = Mid$(s$, e2, l)
    Mid$(s$, e2, l) = t$
End Sub


(Wow, this post was brand new with no responses when I pulled it up.  That's what I get for taking a break.)
Reply


Messages In This Thread
Swapping array elements - by PhilOfPerth - 11-18-2022, 12:06 AM
RE: Swapping array elements - by bplus - 11-18-2022, 12:22 AM
RE: Swapping array elements - by SMcNeill - 11-18-2022, 12:23 AM
RE: Swapping array elements - by bplus - 11-18-2022, 12:27 AM
RE: Swapping array elements - by SMcNeill - 11-18-2022, 12:36 AM
RE: Swapping array elements - by mnrvovrfc - 11-18-2022, 02:49 PM
RE: Swapping array elements - by JRace - 11-18-2022, 04:19 PM
RE: Swapping array elements - by PhilOfPerth - 11-18-2022, 12:46 AM
RE: Swapping array elements - by TerryRitchie - 11-18-2022, 01:09 AM
RE: Swapping array elements - by JRace - 11-18-2022, 01:40 AM
RE: Swapping array elements - by Pete - 11-18-2022, 02:24 AM
RE: Swapping array elements - by SMcNeill - 11-18-2022, 02:41 AM
RE: Swapping array elements - by Pete - 11-18-2022, 02:51 AM
RE: Swapping array elements - by JRace - 11-18-2022, 03:42 AM
RE: Swapping array elements - by Pete - 11-18-2022, 04:15 AM
RE: Swapping array elements - by PhilOfPerth - 11-18-2022, 05:45 AM
RE: Swapping array elements - by Pete - 11-18-2022, 05:57 AM
RE: Swapping array elements - by SMcNeill - 11-18-2022, 12:04 PM
RE: Swapping array elements - by bplus - 11-18-2022, 01:02 PM
RE: Swapping array elements - by mnrvovrfc - 11-18-2022, 02:40 PM
RE: Swapping array elements - by bplus - 11-18-2022, 03:08 PM
RE: Swapping array elements - by bplus - 11-18-2022, 04:21 PM
RE: Swapping array elements - by Pete - 11-18-2022, 06:54 PM
RE: Swapping array elements - by PhilOfPerth - 11-19-2022, 12:12 AM
RE: Swapping array elements - by Pete - 11-19-2022, 12:16 AM



Users browsing this thread: 12 Guest(s)