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

Autentifică-te pentru a putea comenta.

Autentifică-te