Parcurgerea Cifrelor unui Număr în C++
Învață să extragi și să prelucrezi cifrele unui număr natural în C++. Tutorial complet cu exemple, greșeli frecvente și exerciții tip pbinfo.
Parcurgerea Cifrelor unui Număr în C++
Definiție
Parcurgerea cifrelor unui număr înseamnă procesul prin care extragem și prelucrăm fiecare cifră a unui număr natural, de obicei de la dreapta la stânga (de la ultima cifră la prima).
Teorie
Pentru a extrage cifrele unui număr n, folosim două operații fundamentale:
- •n % 10 - extrage ultima cifră (restul împărțirii la 10)
- •n / 10 - elimină ultima cifră (câtul împărțirii la 10)
Algoritmul de bază
Cât timp n != 0:
cifra = n % 10 (extrage ultima cifră)
prelucrează cifra
n = n / 10 (elimină ultima cifră)
Exemple C++ Compilabile
Exemplul 1: Afișarea cifrelor unui număr
1#include <iostream> 2using namespace std; 3 4int main() { 5 int n; 6 cout << "Introduceti un numar: "; 7 cin >> n; 8 9 cout << "Cifrele numarului sunt: "; 10 while (n != 0) { 11 int cifra = n % 10; 12 cout << cifra << " "; 13 n = n / 10; 14 } 15 16 return 0; 17}
Exemplu de execuție:
- •Input: 1234
- •Output: Cifrele numarului sunt: 4 3 2 1
Exemplul 2: Suma cifrelor unui număr
1#include <iostream> 2using namespace std; 3 4int main() { 5 int n, suma = 0; 6 cout << "Introduceti un numar: "; 7 cin >> n; 8 9 while (n != 0) { 10 suma = suma + n % 10; 11 n = n / 10; 12 } 13 14 cout << "Suma cifrelor: " << suma << endl; 15 return 0; 16}
Exemplu de execuție:
- •Input: 1234
- •Output: Suma cifrelor: 10 (1+2+3+4)
Exemplul 3: Numărul de cifre
1#include <iostream> 2using namespace std; 3 4int main() { 5 int n, nr_cifre = 0; 6 cout << "Introduceti un numar: "; 7 cin >> n; 8 9 if (n == 0) { 10 nr_cifre = 1; // Cazul special: 0 are o cifră 11 } else { 12 while (n != 0) { 13 nr_cifre++; 14 n = n / 10; 15 } 16 } 17 18 cout << "Numarul are " << nr_cifre << " cifre" << endl; 19 return 0; 20}
Exemplul 4: Oglinditul (inversul) unui număr
1#include <iostream> 2using namespace std; 3 4int main() { 5 int n, oglindit = 0; 6 cout << "Introduceti un numar: "; 7 cin >> n; 8 9 while (n != 0) { 10 int cifra = n % 10; 11 oglindit = oglindit * 10 + cifra; 12 n = n / 10; 13 } 14 15 cout << "Oglinditul: " << oglindit << endl; 16 return 0; 17}
Exemplu de execuție:
- •Input: 1234
- •Output: Oglinditul: 4321
Exemplul 5: Cifra maximă dintr-un număr
1#include <iostream> 2using namespace std; 3 4int main() { 5 int n, maxim = 0; 6 cout << "Introduceti un numar: "; 7 cin >> n; 8 9 while (n != 0) { 10 int cifra = n % 10; 11 if (cifra > maxim) { 12 maxim = cifra; 13 } 14 n = n / 10; 15 } 16 17 cout << "Cifra maxima: " << maxim << endl; 18 return 0; 19}
Greșeli Frecvente
1. Uitarea cazului n = 0
1// GREȘIT - pentru n=0, while-ul nu se execută deloc 2int nr_cifre = 0; 3while (n != 0) { 4 nr_cifre++; 5 n = n / 10; 6} 7// nr_cifre rămâne 0, dar 0 are 1 cifră! 8 9// CORECT 10int nr_cifre = 0; 11if (n == 0) nr_cifre = 1; 12else { 13 while (n != 0) { 14 nr_cifre++; 15 n = n / 10; 16 } 17}
2. Modificarea variabilei originale
1// GREȘIT - pierdem valoarea lui n 2int n; 3cin >> n; 4while (n != 0) { 5 // ... prelucrare 6 n = n / 10; 7} 8cout << n; // n este acum 0! 9 10// CORECT - folosim o copie 11int n, copie; 12cin >> n; 13copie = n; 14while (copie != 0) { 15 // ... prelucrare 16 copie = copie / 10; 17} 18cout << n; // n păstrează valoarea inițială
3. Confuzia între % și /
1// % 10 = ultima cifră 2// / 10 = numărul fără ultima cifră 3 4int n = 1234; 5cout << n % 10; // 4 (ultima cifră) 6cout << n / 10; // 123 (fără ultima cifră)
Exerciții Tip PBInfo
Exercițiul 1 - Suma cifrelor pare
Să se afișeze suma cifrelor pare ale unui număr natural n.
- •Exemplu: n = 2468 → Rezultat: 20 (2+4+6+8)
Exercițiul 2 - Prima și ultima cifră
Să se afișeze prima și ultima cifră a unui număr natural n.
- •Exemplu: n = 12345 → Prima: 1, Ultima: 5
Exercițiul 3 - Număr palindrom
Să se verifice dacă un număr este palindrom (egal cu oglinditul său).
- •Exemplu: n = 12321 → DA (este palindrom)
Exercițiul 4 - Frecvența unei cifre
Să se numere de câte ori apare cifra c în numărul n.
- •Exemplu: n = 121212, c = 2 → Rezultat: 3
Exercițiul 5 - Cifre distincte
Să se verifice dacă toate cifrele unui număr sunt distincte.
- •Exemplu: n = 1234 → DA, n = 1214 → NU
Tutorialul te-a ajutat?
Dacă ai nevoie de ajutor personalizat, găsește un profesor calificat pentru meditații
