Oglinditul unui numar


Algoritmul de rezolvare a problemei oglinditului unui numar este un algoritm foarte des intalnit in problemele de informatica.

Ce este oglinditul unui numar intreg?

Oglinditul unui numar intreg este tot un numar intreg format prin inversarea cifrelor numarului initial. De exemplu, oglinditul numarului 123 este 321.

Cel mai simplu algoritm este bazat pe structura repetitiva CAT_TIMP.

Pasii algoritmului ar fi:

  1. se citeste un numar cu oricate cifre (pana la 9 cifre);
  2. variabila in care calculam oglinditul numarului „og” o initializam pe 0;
  3. cat timp numarul initial mai are cifre, ia ultima cifra din numarul initial (a%10) si adauga pe pozitia cifrei unitatilor in noul numar in care calculam oglinditul (og = og * 10 + a%10);
  4. taie ultima cifra din numarul initial.

Blocul de cod este:

int oglindit(int a){
    int og = 0;
    while (a > 0)
    {
        og = og * 10 + a % 10;
        a = a / 10;
    }
    return og;
}

Daca nu mi se cere sa returnez valoarea oglinditului, pot scrie:

void oglindit(int a, int &og){
    og = 0;
    while (a > 0)
    {
        og = og * 10 + a % 10;
        a = a / 10;
    }    
}

Acelasi algoritm poate fi scris si folosind stringurile si functiile de pe stringuri:

int oglindit(int a){
    string s=to_string(a);
    return stoi(reverse(s.begin(), s.end()));
}

Functia „to_string” converteste numarul intreg in string. Functia „reverse” rastoarna sirul de caractere din stringul s iar functia „stoi” converste stringul obtinut la numar intreg si acesta se returneaza.

Lasă un răspuns

Completează mai jos detaliile cerute sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare /  Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare /  Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare /  Schimbă )

Conectare la %s

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.