Interschimbarea a Două Variabile în C++
Trei metode de bază de implementare a algoritmului
Problema de Rezolvat
Cerința
Se dau două numere a și b, să se interschimbe valorile lor.
Exemplu:
  • Inițial: a = 5, b = 7
  • Final: a = 7, b = 5
Provocarea
Dacă îi atribuim direct lui a valoarea lui b, valoarea inițială a lui a se pierde!
Astfel, nu mai putem să îi dăm lui b valoarea originală a lui a.
Metoda 1: Variabila Auxiliară
Cea mai intuitivă și sigură metodă folosește o variabilă temporară pentru a salva valoarea inițială.
01
Salvare
Creăm variabila aux care păstrează valoarea inițială a lui a
02
Prima atribuire
Lui a îi dăm valoarea lui b
03
A doua atribuire
Lui b îi dăm valoarea din aux (valoarea inițială a lui a)
Metoda 1: Regula paharelor
Implementare: Variabilă Auxiliară
#include <iostream> using namespace std; int main() { // Declarăm și citim cele două numere int a, b; cin >> a >> b; // Interschimbăm valorile int aux = a; // Salvăm valoarea lui a a = b; // a primește valoarea lui b b = aux; // b primește valoarea inițială a lui a // Afișăm rezultatul cout << a << " " << b; return 0; }

Avantaj: Metodă clară, ușor de înțeles și de debugat. Recomandată pentru început!
Metoda 2: Funcția swap()
C++ oferă o funcție predefinită care face interschimbarea automat: swap(a, b)
Este cea mai simplă metodă din punct de vedere al codului scris.
Implementare minimalistă
int a, b; cin >> a >> b; swap(a, b); // O singură linie! cout << a << " " << b;

⚠️ Atenție! Această funcție nu este permisă la bacalaureat și nu funcționează pe toate mediile de programare. Folosiți-o doar în proiecte personale!
Metoda 3: Operații Matematice
O metodă ingenioasă care nu necesită memorie suplimentară — doar operații aritmetice!
1
Pas 1
a = a + b
Acum a conține suma celor două valori
2
Pas 2
b = a - b
Rezultă b = (a+b) - b = a (valoarea inițială a lui a)
3
Pas 3
a = a - b
Rezultă a = (a+b) - a = b (valoarea inițială a lui b)
Implementare: Operații Matematice
#include <iostream> using namespace std; int main() { // Declarăm și citim cele două numere int a, b; cin >> a >> b; // Interschimbăm folosind operații aritmetice a = a + b; // a conține acum suma b = a - b; // b = (a+b) - b = valoarea inițială a a = a - b; // a = (a+b) - a = valoarea inițială b // Afișăm rezultatul cout << a << " " << b; return 0; }
Utilă în contexte cu memorie extrem de limitată, dar nu este necesară în practică pentru majoritatea problemelor.
Comparație: Cele Trei Metode
Variabilă Auxiliară
Avantaje:
  • Cea mai clară și sigură
  • Funcționează întotdeauna
  • Recomandată la bacalaureat
Dezavantaj: Folosește memorie extra
Funcția swap()
Avantaje:
  • Cod foarte concis
  • Folosită în cod profesional
Dezavantaj: Nu e permisă la examene oficiale
Operații Matematice
Avantaje:
  • Nu necesită memorie extra
  • Demonstrație matematică elegantă
Dezavantaj: Mai greu de înțeles
Când Să Folosești Fiecare Metodă?
La Învățare & Bacalaureat
Folosește variabila auxiliară — este metoda standard, acceptată peste tot și ușor de explicat
În Proiecte Personale
Folosește swap() — cod mai curat și profesional, folosit în industrie
Pentru Curiozitate
Explorează varianta matematică — îți dezvoltă gândirea algoritmică
Recapitulare & Resurse
Reține:
  • Interschimbarea necesită atenție la ordinea operațiilor
  • Variabila auxiliară este alegerea sigură pentru examene
  • Fiecare metodă are contexte în care excelează
  • Înțelegerea tuturor metodelor te face un programator mai bun
Continuă să practici! Încearcă toate cele trei metode în cod propriu.

Made with