Algoritmi Elementari – Extragerea Cifrelor unui Număr 10
1. Obiectivele lecției:
- Să înțeleagă conceptul de extragere a cifrelor unui număr.
- Să învețe cum să separe și să proceseze cifrele unui număr întreg.
- Să implementeze algoritmi pentru extragerea cifrelor într-un limbaj de programare (C++).
- Să aplice algoritmi în probleme practice, cum ar fi verificarea palindroamelor sau calcularea sumei cifrelor.
2. Conținutul lecției:
Ce reprezintă extragerea cifrelor unui număr?
- Definiție: Extragerea cifrelor unui număr presupune obținerea fiecărei cifre din componența numărului, pentru a le putea procesa individual.
- Exemplu:
- Număr: 12345.
- Cifre: 1, 2, 3, 4, 5.
3. Metoda generală:
Principiul de bază:
- Obține ultima cifră a numărului folosind operația modulo:
cifra = numar % 10.
- Elimină ultima cifră prin împărțirea numărului la 10:
numar = numar / 10.
- Repetă pașii 1 și 2 până când numărul devine 0.
Pseudocod:
Intrare: numar
Cât timp numar ≠ 0:
cifra = numar % 10
numar = numar / 10
Afișează cifra
4. Exemple practice:
Exemplu 1: Afișarea cifrelor unui număr în ordine inversă
Cod în C++:
#include <iostream>
using namespace std;
int main() {
int numar;
cout << „Introdu un numar: „;
cin >> numar;
cout << „Cifrele numarului sunt: „;
while (numar != 0) {
int cifra = numar % 10; // Ultima cifră
cout << cifra << ” „;
numar = numar / 10; // Eliminăm ultima cifră
}
cout << endl;
return 0;
}
Exemplu 2: Calcularea sumei cifrelor unui număr
Cod în C++:
#include <iostream>
using namespace std;
int main() {
int numar, suma = 0;
cout << „Introdu un numar: „;
cin >> numar;
while (numar != 0) {
int cifra = numar % 10; // Ultima cifră
suma += cifra; // Adăugăm cifra la sumă
numar = numar / 10; // Eliminăm ultima cifră
}
cout << „Suma cifrelor este: ” << suma << endl;
return 0;
}
Exemplu 3: Determinarea cifrei maxime a unui număr
Cod în C++:
#include <iostream>
using namespace std;
int main() {
int numar, maxCifra = 0;
cout << „Introdu un numar: „;
cin >> numar;
while (numar != 0) {
int cifra = numar % 10; // Ultima cifră
if (cifra > maxCifra) { // Actualizăm cifra maximă
maxCifra = cifra;
}
numar = numar / 10; // Eliminăm ultima cifră
}
cout << „Cifra maxima este: ” << maxCifra << endl;
return 0;
}
Exemplu 4: Verificarea dacă un număr este palindrom
Cod în C++:
#include <iostream>
using namespace std;
int main() {
int numar, numarOriginal, invers = 0;
cout << „Introdu un numar: „;
cin >> numar;
numarOriginal = numar; // Salvăm numărul original
while (numar != 0) {
int cifra = numar % 10; // Ultima cifră
invers = invers * 10 + cifra; // Construim inversul numărului
numar = numar / 10; // Eliminăm ultima cifră
}
if (numarOriginal == invers) {
cout << „Numarul este palindrom.” << endl;
} else {
cout << „Numarul nu este palindrom.” << endl;
}
return 0;
}
Exemplu 5: Reordonarea cifrelor în ordine crescătoare
Cod în C++:
#include <iostream>
using namespace std;
int main() {
int numar, cifre[10] = {0};
cout << „Introdu un numar: „;
cin >> numar;
// Contorizăm frecvența fiecărei cifre (0-9)
while (numar != 0) {
int cifra = numar % 10;
cifre[cifra]++;
numar = numar / 10;
}
cout << „Cifrele in ordine crescatoare sunt: „;
// Parcurgem cifrele de la 0 la 9 și afișăm fiecare cifră de câte ori apare
for (int i = 0; i < 10; i++) {
while (cifre[i] > 0) {
cout << i;
cifre[i]–;
}
}
cout << endl;
return 0;
}
5. Activități practice pentru elevi:
- Scrieți un program care determină produsul cifrelor unui număr.
- Realizați un program care verifică dacă suma cifrelor unui număr este pară sau impară.
- Scrieți un program care afișează cifrele unui număr în ordine descrescătoare.
6. Scheme logice:
Start
Citește număr
Inițializează array cifre[10] = {0} (toate elementele cu valoarea 0)
Cât timp număr ≠ 0:
Extrage cifra: cifra = număr % 10
Incrementare contor: cifre[cifra] = cifre[cifra] + 1
Împarte numărul: număr = număr / 10
Pentru i de la 0 la 9:
Cât timp cifre[i] > 0:
Afișează i
Decrementează contorul: cifre[i] = cifre[i] – 1
Stop
7. Concluzie:
- Extragerea cifrelor unui număr este o tehnică de bază utilizată în multe aplicații, de la verificarea proprietăților numerelor până la generarea și manipularea datelor.
- Acești algoritmi sunt esențiali pentru dezvoltarea gândirii algoritmice și pentru înțelegerea procesării datelor.