Contact și feedback

Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.


Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.


Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

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

Cuprinsul lecției

Se încarcă…

Citește și

Maximul și minimul unui vector în C++Algoritm recursiv pentru căutare binară (clasa a X-a)Instrucțiunea while (structuri repetitive)Aria unui triunghi folosind coordonatele acestora în C++Cifra maximă a unui număr recursiv în C++Pointer în C++. Variabile de tipul char * (char steluță)Cum să afișezi partea întreagă a unui număr real în C++Matrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicTransformarea unei litere mari în literă mică în C++Ciurul lui Eratostene în C++Vectori de frecvență (de apariții) în C++Aplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorTipuri de date în C++: numere întregi, reale, caractere și alteleNumărul permutărilor în C++ (formula permutărilor)Cel mai mare divizor comun (CMMDC) a două numere în C++Numărul combinărilor în C++ (formula combinărilor)Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Maximul și minimul a două valori în C++Bordarea unei matrice în C++Tipul struct în C++. Ce sunt structurile de date neomogeneVerifică dacă un caracter este cifră în C++Cifra de control a unui numărIndicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Vectorii în C++: citire și afișareVerificarea unui an bisect în C++Afișarea elementelor unui vector recursiv în C++Suma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)Operații cu numere mari în C++ - Toate funcțiile explicateCum să citești și să afișezi în fișiere în C++Numărul aranjamentelor în C++ (formula aranjamentelor)Numărul de divizori al unui număr în C++Suma 1 + 2 + 3 + ... + N în C++Suma divizorilor unui număr în C++Verifică dacă un număr aparține șirului Fibonacci în C++Verificare dacă șir de caractere este palindrom în C++Recursivitate în C++Verifică dacă un număr dat este o putere de 2 în C++Valoarea absolută (modulul) unui număr în C++Citirea și afișarea matricelor în C++Aflarea sumei primelor N sume GaussOglinditul unui număr în C++Cel mai puțin semnificativ bit în C++Matrice în C++. Declararea și parcurgerea tablourilor bidimensionaleVerifică dacă un caracter este literă în C++Câte numere naturale sunt într-un interval dat? (C++)Suma elementelor unui vector recursiv în C++Citește un șir de caractere cu spații în C++Instrucțiunea continue (structuri repetitive)Funcții în C++. Ce sunt subprogrameleAl N-lea termen Fibonacci în C++Transformarea unui număr din baza 2 în baza 10 în C++Sortare crescătoare recursivă în C++ - Merge sort și Bubble sortFactorialul unui număr în C++Ce înseamnă variabilă globală și locală în C++?Inversarea unui șir de caractere în C++Tutorial instalare CodeBlocks (ușor) - Introducere în informatică C++CMMMC a două numere în C++ (cel mai mic multiplu comun)Verifică dacă o literă este mică sau mare în C++Transformarea unui număr din baza 10 în baza 2 în C++Do while vs while în C++ - Care e diferența?Ce este o funcție void în C++?Numere triunghiulare. Verificarea unui număr triunghiularInterschimbarea a două variabile în C++ (3 metode)Calculul combinărilor de n luate câte k (nCk) în C++Prima cifră a unui număr în C++Suma numerelor naturale dintr-un interval dat în C++Codul ASCII (tabel complet)Verifică dacă un număr este par sau impar fără modulo în C++Cifra maximă și minimă a unui număr în C++Vectorii în C++: declarare și parcurgereMatrice pătratice în C++. Diagonala principală și secundarăAria și circumferința unui cerc în C++Mediana unui șir de valori în C++Rădăcina cubică a unui număr în C++ (cube root)Complexitatea unui algoritm (timp și spațiu) în C++De ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Radicalul unui număr în C++ (rădăcina pătrată)Căutare binară în C++Maximul și minimul a trei valori în C++Indicatorul lui Euler în C++Verificare dacă un număr este palindrom în C++Copiuțe: Cifrele unui numărComentarii în C++Cifrele unui număr. Prelucrarea cifrelor unui număr în C++Materia pentru olimpiada de informatică - tot ce trebuie să știiAflă secolul unui an citit de la tastatură în C++Cel mai semnificativ bit în C++Cel mai frecvent element dintr-un șir în C++Verifică dacă o literă este vocală în C++Transformarea unei litere mici în literă mare în C++Inversarea unui vector în C++Ce înseamnă endl în C++?Funcții predefinite în C++ (matematice, șiruri de caractere)Numărul de cifre ale factorialului unui numărInterclasarea a doi vectori în C++Numărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Numărul minim de peroane pentru o gară în C++Ce este o variabilă unsigned în C++?Distanța dintre două puncte în C++Generarea șirului Fibonacci generalizat în C++Instrucțiunea break (structuri repetitive)Instrucțiunea do while (structuri repetitive)Cea mai lungă secvență de elemente crescătoare în C++Divide et Impera (metodă de programare C++)CMMDC recursiv a două numere naturale în C++Structuri repetitive (while, do while, for, etc)Verifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++Instrucțiunea for (structuri repetitive)Instrucțiunea de decizie în C++: if, else, switch, caseCel mai mic număr cu suma cifrelor N în C++Maximul și minimul a n valori în C++Ridicarea la putere în timp logaritmic în C++. Exponențiere rapidăCombinatorică în C++: permutări, aranjamente, combinări și alteleCum să calculezi instant 2 la puterea N în C++Numărul de apariții al unui număr într-un vector în C++Afișarea divizorilor primi ai unui număr în C++Al N-lea termen dintr-o progresie geometricăȘirul lui Fibonacci în C++Al N-lea termen dintr-o progresie aritmeticăOglinditul recursiv al unui număr în C++Verificare număr prim în C++ (Clasa a IX-a)Șiruri de caractere în C++. Tot ce trebuie să știiVerifică dacă trei puncte sunt coliniare C++Numărul de divizori primi ai unui număr în C++

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont