'Swap functions
'hello from Nicola
'-----------------
use console
sub pprint(string s,a,b) 'serve per stampare i dati
printl "Using " + s +" "+a + " "+ b
end sub
function swap(int *a, int *b)
local int c=a
a=b : b=c
end function
macro swapp(a,b) 'funziona per qualsiasi tipo di dato
typeof a v=a
a=b : b=v
end macro
macro swaps(a,b) 'funziona x qualsiasi dato.
dim as string v(2)={a,b}
a=v(2) : b=v(1)
end macro
macro swapar(a,b) 'swap usando il + e il -
a=a+b
b=a-b
a=a-b
end macro
macro swaper(a,b) 'swap usando il * e il /
a=a*b
b=a/b
a=a/b
end macro
macro swapxor(a,b) 'swap usando il * e il / funziona per soli int
a=a xor b
b=a xor b
a=a xor b
end macro
int a=20, b=35
pprint("Before ",a,b)
swap(a,b)
pprint("swap ",a,b)
swapar(a,b)
pprint("swapar ",a,b)
swaper(a,b)
pprint("swaper ",a,b)
swapxor(a,b)
pprint("swapxor ",a,b)
swaps(a,b)
pprint("swaps ",a,b)
float a=1.5,b=2.5
pprint("Before ",a,b)
swapp(a,b)
pprint("swapp ",a,b)
swapar(a,b)
pprint("swapar ",a,b)
swaper(a,b)
pprint("swaper ",a,b)
'swapxor(a,b) 'non funziona per float
'pprint("swapxor ",a,b)
swaps(a,b)
pprint("swaps ",a,b)
string h="Nicola", k="Charles"
swapp(h,k)
pprint("swapp ",h,k)
swaps(h,k)
pprint("swaps ",h,k)
waitkey