Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Swap di due variabili

Problemi curiosi e quiz vari.

Moderatore: Foto Utentecarlomariamanenti

0
voti

[1] Swap di due variabili

Messaggioda Foto Utentevenexian » 22 mag 2018, 18:38

Lo swap tra due registri è una delle procedure che si imparano da subito in qualsiasi corso di programmazione.

swap(a,b):
t = a
a = b
b = t

E se non avessi disponibile t?
E' possibile farlo solo con le due variabili a e b? :mrgreen:
Immagine
Avatar utente
Foto Utentevenexian
4.472 1 4 6
Master EY
Master EY
 
Messaggi: 1467
Iscritto il: 13 mag 2017, 10:07
Località: Venezia (ma va?)

0
voti

[2] Re: Swap di due variabili

Messaggioda Foto Utentefpalone » 22 mag 2018, 18:53

Con lo XOR?

Ne ho memoria dall'esame di informatica (peraltro era una domanda che mi è capitata all' orale), ma ammetto che sono dovuto andare a rivedere come si fa, perché avevo praticamente rimosso tutti i particolari... :oops:
Avatar utente
Foto Utentefpalone
9.130 4 7 10
G.Master EY
G.Master EY
 
Messaggi: 1909
Iscritto il: 26 dic 2007, 17:46
Località: roma

0
voti

[3] Re: Swap di due variabili

Messaggioda Foto Utentevenexian » 22 mag 2018, 18:55

fpalone ha scritto:Con lo XOR?

Volendo sì, ma anche no...
Immagine
Avatar utente
Foto Utentevenexian
4.472 1 4 6
Master EY
Master EY
 
Messaggi: 1467
Iscritto il: 13 mag 2017, 10:07
Località: Venezia (ma va?)

0
voti

[4] Re: Swap di due variabili

Messaggioda Foto UtenteGuidoB » 22 mag 2018, 18:57

a = a + b;
b = a - b;
a = a - b;

Inelegante, poco efficiente, ma funziona. Spero di non doverlo fare mai!
;-)
Big fan of ƎlectroYou!
Avatar utente
Foto UtenteGuidoB
13,6k 6 12 13
G.Master EY
G.Master EY
 
Messaggi: 2050
Iscritto il: 3 mar 2011, 16:48
Località: Madrid

0
voti

[5] Re: Swap di due variabili

Messaggioda Foto Utentevenexian » 22 mag 2018, 19:05

=D> a entrambi.

Quello con l'xor proposto da fpalone è più elegante, ma egualmente funzionale:

a = a ^ b
b = a ^ b
a = a ^ b

Perché poco efficiente? Stessa velocità e minor utilizzo di memoria. E' più efficiente, non meno!
Immagine
Avatar utente
Foto Utentevenexian
4.472 1 4 6
Master EY
Master EY
 
Messaggi: 1467
Iscritto il: 13 mag 2017, 10:07
Località: Venezia (ma va?)


Torna a Ah, ci sono!

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti