Interschimbare valori a doua variabila fara variabila aditionala

Ma uitam peste subiectele de la proba scrisa de la UVT si mi-a sarit in ochi un exercitiu: ex 4c)
Mai exact sa se interschimbe valorile a doua variabile(swap ca sa zic asa),fara sa se foloseasca o variabila aditionala(presupum ca se refere la o a treia variabila/unu auxiliara),se poate asa ceva?Sau nu am inteles eu bine…

1 Like

Se poate cu un simplu XOR repetat:

a = 11, b = 3
a = a ^ b
b = a ^ b
a = a ^ b
//la final a = 3, b = 11

Daca tin bine minte, trebuie doar ca unul din numere sa nu fie 0.

a = a + b;
b = a - b;
a = a - b;
3 Likes

Solutia asta ar fi valabila doar pentru valori numerice, nu?

Edit: scuze, subiectul spune “variabile intregi”, deci mi-am raspuns singur :slight_smile:

1 Like

@tibs: am senzatia ca e o problema cu varianta cu operatii aritmetice daca apare overflow, de exemplu ce se intampla daca a + b > 2^32?

1 Like

Operatii cu numere mari, transformi numerele intr-un array de cifre cu dimensiune dinamica si implementezi operatii pe +, - pe aceste structuri de date.