Cum aflu cifrele unui număr în C++?
Cu n % 10 iei ultima cifră și cu n / 10 o tai, cât timp n > 0. Cifrele ies de la dreapta la stânga.
Toate prelucrările de cifre se bazează pe două operații: n % 10 este ultima cifră, iar n / 10 este numărul fără ultima cifră. Repetate într-o buclă, îți dau toate cifrele, de la dreapta la stânga:
while (n > 0) {
int c = n % 10; // cifra curentă
// prelucrez c
n /= 10;
}Suma cifrelor, numărul de cifre, cea mai mare cifră, câte cifre pare are: toate folosesc aceeași buclă, cu alt corp.
Trei lucruri de ținut minte:
- Bucla distruge
n. Dacă mai ai nevoie de valoarea inițială, lucrează pe o copie. - Pentru
n = 0bucla nu pornește. Numărul de cifre al lui 0 este 1, dar bucla dă 0, deci tratezi cazul separat. - Construirea inversă se face cu
r = r * 10 + c. Așa obții răsturnatul. Ca să păstrezi ordinea cifrelor, folosești o putere a lui 10 care crește.
Lecția despre cifre trece prin toate tiparele, inclusiv palindromul.
Lecția care merge mai departe: Prelucrarea cifrelor unui număr