← Înapoi la blog
Ghiduri și resurseProfesorBun.ro

Cifrele unui număr în C++: ce fac / 10 și % 10

Ce obții din 5070 % 10 și 5070 / 10? Urmărește cifrele pe rând, vezi un program complet și verifică de ce numărul 0 cere atenție.

Răspuns pe scurt

Pentru un număr natural n, n % 10 dă ultima cifră, iar împărțirea întreagă n / 10 o elimină. Repeți cele două operații până ai prelucrat toate cifrele; ordinea este de la dreapta la stânga.

Pentru un număr natural n, n % 10 dă ultima cifră, iar împărțirea întreagă n / 10 o elimină. Repeți cele două operații până ai prelucrat toate cifrele; ordinea este de la dreapta la stânga.

La 5070, prima cifră extrasă este 0. Nu este o eroare: ai început cu unitățile. Urmărește apoi ce rămâne din număr și vei vedea de ce ai nevoie de ambele operații.

5070 = 507 × 10 + 0

Aceeași împărțire îți oferă două informații: câtul întreg este 507, iar restul este 0. În C++, cu operanzi întregi, 5070 / 10 dă 507 și 5070 % 10 dă 0.

Regula este descrisă în secțiunea despre operatori din proiectul standardului C++. În acest tutorial de început pentru liceu lucrăm numai cu intrări valide: numere naturale între 0 și un miliard. Pentru numere cu parte zecimală sau pentru valori negative, nu extinde mecanic explicația.

O cifră citită, un număr mai scurt

Notăm cu m numărul pe care îl prelucrăm. La fiecare pas citim m % 10, apoi înlocuim m cu câtul întreg m / 10:

  • 5070 → cifra 0, apoi m = 507;
  • 507 → cifra 7, apoi m = 50;
  • 50 → cifra 0, apoi m = 5;
  • 5 → cifra 5, apoi m = 0.

Rezultatul afișat este 0 7 0 5. Cele două zerouri sunt prelucrate ca orice altă cifră. Programul nu afișează cifrele în ordinea inițială și nici nu construiește un număr nou din ele.

Program complet, inclusiv pentru intrarea 0

#include <iostream>

int main() {
    unsigned long long n;
    std::cin >> n;
    unsigned long long m = n;

    do {
        unsigned int cifra = m % 10;
        std::cout << cifra << ' ';
        m /= 10;
    } while (m != 0);
}

n păstrează valoarea citită, iar m este copia pe care o modificăm. m /= 10 înseamnă m = m / 10. Așa ajungem, la următorul pas, la unitățile numărului rămas.

Alegerea buclei contează la 0. Instrucțiunea do-while execută corpul înainte să verifice condiția. Programul afișează deci o cifră 0 și se oprește. Cu while (m != 0), corpul nu s-ar executa niciodată pentru această intrare.

Dacă pierzi cifre sau programul nu se oprește

Cu m %= 10 în loc de m /= 10, din 5070 rămâne imediat 0. Ai păstrat numai cifra unităților, deci nu mai ai din ce extrage celelalte cifre.

Dacă elimini cu totul actualizarea lui m, pentru o intrare pozitivă vei afișa aceeași cifră la nesfârșit. Uită-te la valoarea lui m după prima trecere: dacă nu s-a schimbat, ai găsit rândul de reparat.

Înainte de rulare, încearcă 406

Acoperă urmărirea de mai sus și scrie ce va afișa programul pentru 406. Notează și valorile succesive ale lui m.

Ar trebui să obții cifrele 6 0 4, iar m să treacă prin 406, 40, 4 și 0. Dacă ai scris 4, 0, 6, ai folosit ordinea de citire a numărului în locul ordinii de extragere.

Repetă această verificare fără rezolvarea în față cu alt număr. Pentru o explicație la clasă sau la un profesor de informatică, păstrează urmărirea ta: se vede exact după ce pas ai pierdut o cifră.

Surse consultate

  1. 1.eel.is
  2. 2.learn.microsoft.com

Întrebări frecvente

Răspunsuri rapide despre subiect

De ce folosesc % 10 și nu / 10 pentru ultima cifră?

Pentru un număr natural, restul împărțirii la 10 este între 0 și 9: cifra unităților. Câtul întreg păstrează ce rămâne înaintea ei.

Programul afișează numărul inversat?

Programul afișează cifre separate prin spații, începând cu unitățile. De exemplu, 10 produce 0 1. Nu calculează o nouă valoare numerică inversată.

Dacă tastez 0012 la intrare, se păstrează zerourile de la început?

Nu în variabila numerică din acest program: valoarea citită este 12. Dacă ai nevoie și de caracterele 0 de la început, citește un șir de caractere.

De ce copiez n în m?

m ajunge la 0 în timpul extragerii. Folosind copia, valoarea citită rămâne în n și o poți utiliza după terminarea buclei.

Explorează mai departe

Pagini utile după articolul „Cifrele unui număr în C++: ce fac / 10 și % 10”

Continuă de la informațiile din articol către materii, examene, orașe și profiluri publice de profesori care te pot ajuta.

Mai citește

Alte articole din aceeași categorie