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

Obține medalia mult dorită. Devino As la olimpiadă.

Curs complet de olimpiadă, pregătit de olimpici de la Oxford și TU Delft.

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