Scambiare due variabili

scambia00

Due variabili contengono dei valori e abbiamo la necessità di scambiarli tra loro.


Versione 1

scambia01

Assegnare un valore da una variabile all’altra, provoca la perdita di uno dei due dati.


Versione 2

scambia02

Si utilizza una variabile temporanea, di appoggio.

I valori ruotano in senso antiorario:

\textbf{temp} \leftarrow_1 \textbf{var1} \leftarrow_2 \textbf{var2} \leftarrow_3 \textbf{temp}

Si può scegliere di ruotare in senso orario (verso destra)

temp ← var2
var2 ← var1
var1
← temp

\textbf{temp} \rightarrow_3 \textbf{var1} \rightarrow_2 \textbf{var2} \rightarrow_1 \textbf{temp}


Tre variabili

Si può scegliere in quale senso ruotare

temp ← var1
var1
← var2
var2 ← var3
var3
← temp

Senso antiorario (da destra verso sinistra)

\textbf{temp} \leftarrow_1 \textbf{var1} \leftarrow_2 \textbf{var2} \leftarrow_3 \textbf{var3} \leftarrow_4 \textbf{temp}

temp ← var3
var3
← var2
var2 ← var1
var1
← temp

Senso orario (da sinistra verso destra)

\textbf{temp} \rightarrow_4 \textbf{var1} \rightarrow_3 \textbf{var2} \rightarrow_2 \textbf{var3} \rightarrow_1 \textbf{temp}


Numeri?

Se due variabili contengono valori numerici allora si può utilizzare un altro stratagemma

var1 ← var1 + var2
var2 ← var1 - var2
var1
← var1 - var2

100 + 5 = 105
105 - 5 = 100
105 - 100 = 5