Sari la conținut
LECȚIA 14.1 · INFORMATICĂ

Prelucrarea cifrelor unui număr

Extragerea cifrelor cu % și /, suma cifrelor, oglinditul și numărul de cifre.

Conținut verificat

Ideea fundamentală

Orice prelucrare de cifre folosește perechea:

  1. n % 10: ultima cifră;
  2. n / 10: numărul fără ultima cifră.

Repetăm până n devine 0.

Suma cifrelor

#include <iostream>
using namespace std;

int main() {
    int n = 1234, s = 0;
    while (n > 0) {
        s = s + n % 10;
        n = n / 10;
    }
    cout << s;
    return 0;
}

Pași: s=4, n=123; s=7, n=12; s=9, n=1; s=10, n=0. Se afișează 10.

Oglinditul (inversul) numărului

#include <iostream>
using namespace std;

int main() {
    int n = 1234, ogl = 0;
    while (n > 0) {
        ogl = ogl * 10 + n % 10;
        n = n / 10;
    }
    cout << ogl;
    return 0;
}

Pași: ogl=4; ogl=43; ogl=432; ogl=4321. Se afișează 4321.

Numărul de cifre

#include <iostream>
using namespace std;

int main() {
    int n = 507, nr = 0;
    while (n > 0) {
        nr++;
        n = n / 10;
    }
    cout << nr;
    return 0;
}

Rezultat: 3. Atenție: pentru n = 0 acest cod dă 0 cifre; cazul 0 se tratează separat.

Exemplu rezolvat

Ce afișează pentru n citit egal cu 906?

#include <iostream>
using namespace std;

int main() {
    int n, s = 0;
    cin >> n;
    while (n > 0) {
        if (n % 2 == 0) s += n % 10;
        n /= 10;
    }
    cout << s;
    return 0;
}
se trimit programului la citire

Cifrele sunt 6, 0, 9. Condiția n % 2 == 0 testează paritatea numărului curent, care e mereu aceeași cu paritatea ultimei lui cifre (10 e par), deci programul adună cifrele pare: n=906 par → s+=6 (s=6), n=90 par → s+=0 (s=6), n=9 impar → nimic, n=0 stop. Se afișează 6.

Greșeli frecvente

  1. Confuzia dintre o proprietate a numărului și una a ultimei cifre: la paritate dau același rezultat (n % 2 e egal cu n % 10 % 2, pentru că 10 e par), dar la alte împărțiri nu: pentru n = 25, n % 3 e 1, iar n % 10 % 3 e 2.
  2. La oglindit, formula e ogl * 10 + cifra, nu ogl + cifra * 10.
  3. Modificarea lui n în buclă îl distruge: dacă îți trebuie și la final, salvează-l într-o copie.