Cum funcționează
Structura din main e identică cu cea de la
numărarea valorilor prime. Tot ce se schimbă
este funcția de test — și exact ea merită înțeleasă, pentru că inversarea unui număr e o
tehnică ce apare la multe alte subiecte.
Inversarea folosește aceleași două operații ca la
suma cifrelor, dar în sens invers: în loc să
descompui numărul, îl reconstruiești cifră cu cifră.
inversat = inversat * 10 + copie % 10
Se citește așa: „împinge cifrele deja adunate cu o poziție la stânga (* 10), apoi pune ultima
cifră a lui copie pe locul rămas liber."
Pentru n = 3003:
copie = 3003 inversat = 0 * 10 + 3 = 3
copie = 300 inversat = 3 * 10 + 0 = 30
copie = 30 inversat = 30 * 10 + 0 = 300
copie = 3 inversat = 300 * 10 + 3 = 3003
copie = 0 ← stop
inversat == n, deci e palindrom.
Detaliul care se ratează cel mai des: se lucrează pe o copie, nu pe n însuși. Bucla distruge
valoarea pe care o consumă, iar la final ai nevoie de n intact pentru comparație.
Numerele de o singură cifră, precum 8, sunt palindroame — inversul lor e chiar ele.
Greșeli frecvente
- Modificarea lui
n în buclă, fără copie — la final n a devenit 0, iar comparația
inversat == n e falsă pentru orice număr. Este greșeala numărul unu la această problemă.
inversat = inversat + copie % 10, fără * 10 — adună cifrele în loc să le alipească, deci
calculezi de fapt suma cifrelor.
- Compararea cifră cu cifră, „de la capete", pe numere — se poate, dar cere să știi câte cifre
are numărul și e mult mai lung. Pe numere, inversarea e varianta scurtă; „de la capete" e potrivit
pentru șiruri de caractere.
- Afișarea palindroamelor în loc de câte sunt — enunțul cere numărul lor.