Sari la conținut

Capitolul 14 · Lecția 14.2 din 2

Palindrom, oglindit și cifra de control

Trei prelucrări clasice de cifre care apar constant la subiectul I și II.

Capitolul 14: Algoritmi fundamentaliConținut verificat

Pe scurt pentru BAC · 4 idei

  • Un număr e palindrom dacă e egal cu oglinditul lui, cum sunt 121, 3443 sau 7.
  • În programul pentru cifra de control, bucla exterioară continuă cât timp n > 9 și pune la fiecare pas n = s.
  • Pentru 9875 sumele succesive sunt 29, apoi 11, apoi 2, deci cifra de control este 2.
  • La „ce afișează”, urmărești oglinditul într-un tabel cu n, n%10 și ogl pe fiecare linie.
Pe această pagină4 secțiuni

Oglinditul unui număr

Oglinditul unui numar

#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.

se trimit programului la citire

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).

Verificarea daca un numar e palindrom

#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.

se trimit programului la citire

Cifra de control

Cifra de control = aplici repetat suma cifrelor până rămâne O SINGURĂ cifră.

Pentru 9875: 9+8+7+5=29→2+9=11→1+1=29+8+7+5 = 29 \to 2+9 = 11 \to 1+1 = 2. Cifra de control: 2.

Cifra de control

#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.

se trimit programului la citire

Scurtătura matematică (pentru verificare rapidă): cifra de control este 1+(n−1) mod 91 + (n - 1) \bmod 9 pentru n>0n > 0 (restul modulo 9, cu 9 în loc de 0). Pentru 9875: 9875=9⋅1097+29875 = 9 \cdot 1097 + 2, deci 2 ✓.

Atenție

La subiectul "ce afișează", urmărește oglinditul în tabel pas cu pas: (n, n%10, ogl) pe fiecare linie. Din 3 pași scriși corect, restul devine mecanic.

Reține

La palindrom compari oglinditul cu o COPIE a lui n, făcută înainte de buclă. Cifra de control se obține repetând suma cifrelor până rămâne o singură cifră; pentru n>0n > 0 ea este 1+(n−1) mod 91 + (n - 1) \bmod 9 (9875 dă 2).

Greșeli frecvente

  1. Uitarea copiei la palindrom: după buclă n e 0, comparația n == ogl e mereu falsă (except 0).
  2. La oglindit, numerele terminate în 0 pierd zeroul (120 → 21): e comportamentul corect matematic, dar menționează-l dacă se cere.
  3. Cifra de control cere DOUĂ bucle imbricate (sau formula mod 9), nu o singură sumă.

Bifează când ai terminat, ca s-o vezi citită pe toate dispozitivele.

Testează-te pe capitolul 14

Lecția în clipuri

Clipuri scurte, cu voce și subtitrări.

Folosim cookie-uri esențiale, fără de care site-ul nu merge, și cookie-uri de analiză anonimizate, ca să vedem ce pagini ajută. Detalii în politica de confidențialitate