Oglinditul unui număr
#include <iostream>
using namespace std;
int main() {
int n, ogl = 0;
cin >> n;
while (n > 0) {
ogl = ogl * 10 + n % 10;
n = n / 10;
}
cout << ogl;
return 0;
}Atenție: Oglinditul se construieste inmultind cu 10 si adaugand ultima cifra. Numarul initial se distruge in timpul buclei, de aceea daca mai e nevoie de el trebuie pastrata o copie.
Pentru n = 1234: ogl devine 4, 43, 432, 4321. Atenție: n se DISTRUGE în proces; dacă îl mai folosești, salvează o copie.
Testul de palindrom
Un număr e palindrom dacă e egal cu oglinditul lui (121, 3443, 7).
#include <iostream>
using namespace std;
int main() {
int n, copie, ogl = 0;
cin >> n;
copie = n;
while (n > 0) {
ogl = ogl * 10 + n % 10;
n /= 10;
}
if (copie == ogl) cout << "DA";
else cout << "NU";
return 0;
}Atenție: Copia se face INAINTE de bucla. Daca se face dupa, n e deja zero si comparatia ar fi mereu falsa.
Cifra de control
Cifra de control = aplici repetat suma cifrelor până rămâne O SINGURĂ cifră.
Pentru 9875: . Cifra de control: 2.
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
while (n > 9) {
int s = 0;
while (n > 0) {
s += n % 10;
n /= 10;
}
n = s;
}
cout << n;
return 0;
}Atenție: Se aduna cifrele pana ramane o singura cifra. Rezultatul e egal cu restul impartirii numarului la 9, cu observatia ca multiplii lui 9 dau 9, nu 0.
Scurtătura matematică (pentru verificare rapidă): cifra de control este pentru (restul modulo 9, cu 9 în loc de 0). Pentru 9875: , deci 2 ✓.
Greșeli frecvente
- Uitarea copiei la palindrom: după buclă n e 0, comparația n == ogl e mereu falsă (except 0).
- La oglindit, numerele terminate în 0 pierd zeroul (120 → 21): e comportamentul corect matematic, dar menționează-l dacă se cere.
- Cifra de control cere DOUĂ bucle imbricate (sau formula mod 9), nu o singură sumă.