Interschimbarea a două variabile în C++ (3 metode)
Dându-se două numere a
și b
, să se interschimbe (swap) valorile lor,
astfel încât a
să îi preia valoarea lui b
, iar a
să îi preia valoarea
lui b
.
Exemplu. Dacă la început, a = 5
și b = 7
, după interschimbare, a = 7
și b = 5
.
Explicarea problemei
Problema pare inițial ușoară: îi dăm lui a
valoarea b
, iar lui b
valoarea a
. Problema este însă următoarea — dacă îi dăm lui a
valoarea
b
, valoarea inițială a lui a
se înlocuiește, așadar nu mai putem să îi dăm
lui b
valoarea lui a
, deoarece acesta are altă valoare.
Metoda 1 (variabilă auxiliară)
O primă metodă ar fi să creăm o variabilă auxiliară care să rețină valoarea
inițială a lui a
. După aceea, lui a
îi atribuim valoarea b
, iar lui b
îi atribuim valoarea din variabila auxiliară (deoarece aici e salvată valoarea
inițială a lui a
).
Implementare C++
#include <iostream>
using namespace std;
int main()
{
//Declarăm și citim cele două numere
int a, b;
cin >> a >> b;
//Interschimbăm valorile celor două variabile
int aux = a;
a = b;
b = aux; //Dacă am fi scris b = a, b ar fi luat noua valoare a lui a (nu cea inițială), care este însuși b.
//Afișăm variabilele după interschimbare
cout << a << " " << b;
return 0;
}
Metoda 2 (funcția swap)
Există o funcție care interschimbă valorile a două variabile — funcția
swap()
.
Atenție! Această funcție nu este disponibilă pe toate mediile de programare și nu se poate utiliza la bacalaureat. Așadar, nu este recomandată folosirea acestei funcții.
Implementare C++
#include <iostream>
using namespace std;
int main()
{
//Declarăm și citim cele două numere
int a, b;
cin >> a >> b;
//Interschimbăm valorile celor două variabile
swap(a, b);
//Afișăm variabilele după interschimbare
cout << a << " " << b;
return 0;
}
Metoda 3 (operații cu numere)
Există o metodă mai interesantă, care nu folosește vreo altă variabilă auxiliară. Totul este matematic și poate fi un picuț mai greu de înțeles.
Pentru început, la a
vom aduna valoarea din b
(a = a + b
). De aici, vom
seta b
ca fiind a - b
(cum a
conține acum valoarea inițială a + b
,
scăzând b
, obținem a + b - b = valoarea inițială a lui a
). În final,
scădem din a
, valoarea b
(care conține acum valoarea inițială a lui a
).
Această metodă nu este în particular utilă, decât în situații în care memoria este extrem de limitată.
Implementare în C++
#include <iostream>
using namespace std;
int main()
{
//Declarăm și citim cele două numere
int a, b;
cin >> a >> b;
//Interschimbăm valorile celor două variabile
a = a + b;
b = a - b;
a = a - b;
//Afișăm variabilele după interschimbare
cout << a << " " << b;
return 0;
}
Alte resurse și bibliografie
DS
Autorul acestei lecții
Dominic Satnoianu
Această lecție a fost redactată de către Dominic Satnoianu.
© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate.
Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor.
Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.
Comentarii 0