Algoritmi Elementari – Algoritmi pentru Interschimbare 8
1. Obiectivele lecției:
- Să înțeleagă ce reprezintă interschimbarea a două valori.
- Să învețe diferite metode de interschimbare (cu și fără variabilă auxiliară).
- Să implementeze algoritmi pentru interschimbare în C++.
- Să aplice algoritmi de interschimbare în contexte practice, cum ar fi sortarea.
2. Conținutul lecției:
Ce reprezintă interschimbarea?
- Definiție: Interschimbarea este procesul prin care valorile a două variabile sunt schimbate între ele.
- Aplicații practice: Interschimbarea este utilizată în algoritmi de sortare, aranjamente și alte aplicații care necesită reorganizarea datelor.
3. Metode de interschimbare:
Metoda 1: Cu variabilă auxiliară
- Principiu: Se utilizează o variabilă temporară pentru a stoca una dintre valorile care urmează să fie schimbate.
- Pseudocod:
temp = a
a = b
b = temp
- Cod în C++:
#include <iostream>
using namespace std;
int main() {
int a, b, temp;
cout << „Introdu valoarea lui a: „;
cin >> a;
cout << „Introdu valoarea lui b: „;
cin >> b;
// Interschimbare
temp = a;
a = b;
b = temp;
cout << „Dupa interschimbare: a = ” << a << „, b = ” << b << endl;
return 0;
}
Metoda 2: Fără variabilă auxiliară (folosind adunare și scădere)
- Principiu: Valorile sunt combinate și separate folosind operații aritmetice.
- Pseudocod:
a = a + b
b = a – b
a = a – b
- Cod în C++:
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << „Introdu valoarea lui a: „;
cin >> a;
cout << „Introdu valoarea lui b: „;
cin >> b;
// Interschimbare
a = a + b;
b = a – b;
a = a – b;
cout << „Dupa interschimbare: a = ” << a << „, b = ” << b << endl;
return 0;
}
Metoda 3: Fără variabilă auxiliară (folosind XOR)
- Principiu: Operația XOR este utilizată pentru a interschimba valorile fără a utiliza memorie suplimentară.
- Pseudocod:
a = a XOR b
b = a XOR b
a = a XOR b
- Cod în C++:
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << „Introdu valoarea lui a: „;
cin >> a;
cout << „Introdu valoarea lui b: „;
cin >> b;
// Interschimbare
a = a ^ b;
b = a ^ b;
a = a ^ b;
cout << „Dupa interschimbare: a = ” << a << „, b = ” << b << endl;
return 0;
}
4. Aplicarea interschimbării:
Exemplu: Sortarea a două valori
- Folosind interschimbarea, se pot ordona două valori în ordine crescătoare.
Cod în C++:
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << „Introdu doua valori: „;
cin >> a >> b;
if (a > b) {
// Interschimbare pentru a ordona valorile
int temp = a;
a = b;
b = temp;
}
cout << „Valorile in ordine crescatoare sunt: ” << a << „, ” << b << endl;
return 0;
}
Exemplu: Interschimbarea elementelor dintr-un tablou
Problema: Interschimbați primul și ultimul element al unui tablou.
Cod în C++:
#include <iostream>
using namespace std;
int main() {
int n;
cout << „Introdu dimensiunea tabloului: „;
cin >> n;
int arr[n];
cout << „Introdu elementele tabloului: „;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
// Interschimbarea primului și ultimului element
int temp = arr[0];
arr[0] = arr[n – 1];
arr[n – 1] = temp;
cout << „Tabloul dupa interschimbare: „;
for (int i = 0; i < n; i++) {
cout << arr[i] << ” „;
}
cout << endl;
return 0;
}
5. Activități practice pentru elevi:
- Scrieți un program care interschimbă valorile a două variabile fără a folosi o variabilă auxiliară.
- Realizați un program care interschimbă elementele unui tablou în oglindă (primul cu ultimul, al doilea cu penultimul, etc.).
- Scrieți un program care ordonează trei numere în ordine crescătoare folosind interschimbarea.
6. Scheme logice:
- Interschimbare cu variabilă auxiliară:
- Start -> Citește a, b -> temp = a -> a = b -> b = temp -> Stop.
- Interschimbare fără variabilă auxiliară (aritmetică):
- Start -> Citește a, b -> a = a + b -> b = a – b -> a = a – b -> Stop.
7. Concluzie:
- Interschimbarea este un algoritm fundamental cu numeroase aplicații practice.
- Metodele diferite (cu sau fără variabilă auxiliară) permit flexibilitate în implementare.
- Înțelegerea acestui algoritm este esențială pentru conceperea și implementarea altor algoritmi, cum ar fi sortarea.