Prelucrarea cifrelor unui numar

Algoritmul de prelucrare a cifrelor unui numar, obtine intotdeauna ultima cifra a numarului curent ca fiind restul impartirii la 10 (cifra = n % 10), iar apoi elimina aceasta cifra din numar (n = n / 10). Algoritmul continua cat timp n > 0.  Forma generala  este:

while (n)                 
{ 
	cifra = n % 10; 
	Prelucrare cifra 
	n = n / 10; 
}

Problemele ce privesc generarea unui numar plecand de la un numar dat, se clasifica in general in doua categorii:

  • Determinarea unui nou numar (m), pornind de la cifrele numarului initial (n), avand cifrele in ordine inversa fata de cel initial. Ex: construirea oglinditului unui numar.

n = 123 => m = 321
321 = 3 * 102 + 2 * 101 + 1 * 100 = ((0  * 10 + 3) * 10 + 2) * 10 + 1 <=> m = m * 10 + n % 10

int m = 0;                 //se initializeaza noul numar cu 0
while (n) 
{ 
    m = m * 10 + n % 10; 
    n = n / 10; 
}
  • Determinarea unui nou numar (m), pornind de la cifrele numarului initial (n),  avand cifrele in aceeasi ordine cu cel initial. Ex: construirea unui numar format prin eliminarea primei cifre.

n = 1234 => m = 234

234=2 * 102 + 3 * 101 + 4 * 100 = 4 * 1 + 3 * 10 + 2 * 100 <=> m = m + n % 10 * p; p = p * 10;

int m = 0, p = 1;         //se initializeaza noul numar cu 0; variabila p va retine puterile lui 10
while (n > 9) 
{ 
     m = m + n % 10 * p; 
     p = p * 10; 
     n = n / 10; 
}

Probleme rezolvate

  1. Sa se scrie o functie care returneaza suma cifrelor unui numar trimis ca parametru.
  2. Sa se scrie o functie care returneaza numarul cifrelor unui numar trimis ca parametru.
  3. Sa se scrie o functie care returneaza inversul unui numar trimis ca parametru.
  4. Sa se scrie o functie care verifica daca un numar este palindrom. Un numar este palindrom daca este egal cu oglinditul sau. (Ex.: 12321)
  5. Să se scrie o funcție C++ care să returneze suma factorialelor cifrelor unui număr natural transmis ca parametru.
    #898 SumFactCif https://www.pbinfo.ro/?pagina=probleme&id=898
  6. Să se scrie o funcție C++ care să determine cea mai mare și cea mai mică cifră a unui număr natural transmis ca parametru. Funcția va întoarce rezultatele prin intermediul unor parametri de ieşire.#894 CifMinMax https://www.pbinfo.ro/?pagina=probleme&id=894
  7. Sa se scrie o functie care primeste ca parametru un numar si apoi returneaza tot prin intermediul aceluiasi parametru numarul obtinut prin eliminarea primei si ultimei cifre a numarului initial. Ex: n = 12345; Nr(n); => nr = 234
  8. Să se scrie un subprogram C++ prin care se dublează prima cifră a unui număr natural n transmis ca parametru. Funcția întoarce rezultatul prin intermediul aceluiași parametru n.
    #1633 Dublare1 https://www.pbinfo.ro/?pagina=probleme&id=1633
  9. Sa se scrie o functie numita Par, care sa verifice daca un numar n trimis ca parametru are cel putin o cifra para. Sa se numere cate numere din cele n citite au ultima cifra para si restul impare folosind apeluri succesive al functiei par.
  10. Subprogramul Impare are un singur parametru, n, prin care primește un număr natural. Subprogramul înlocuiește fiecare cifră impară a lui n cu cea mai mare cifră pară strict mai mică decât ea (astfel cifra 1 se înlocuieşte cu cifra 0, cifra 3 cu cifra 2 etc.) și furnizează numărul obținut tot prin parametrul n.
    #3119 Impare_Bac https://www.pbinfo.ro/?pagina=probleme&id=3119
    Bacalaureat 2019, sesiunea iunie-iulie
  11. Se citește un număr natural n și o cifră c. Determinați numărul obținut prin eliminarea tuturor aparițiilor cifrei c din numărul n.
    #360 cifra https://www.pbinfo.ro/?pagina=probleme&id=360
  12. Se citesc perechi de numere naturale până la citirea a două valori nule. Să se determine câte dintre perechile X Y au proprietatea că prin concatenarea lui X cu Y sau a lui Y cu X să se obțină un palindrom.
    #1410 Numere12 https://www.pbinfo.ro/?pagina=probleme&id=1410
  13. Subprogramul Egal are un parametru, n, prin care primește un număr natural cu cel puțin o cifră impară. Subprogramul returnează valoarea 1 dacă toate cifrele impare ale lui n sunt egale între ele sau valoarea 0 în caz contrar.
    #3104 B_Egal https://www.pbinfo.ro/?pagina=probleme&id=3104
    Subiect bacalaureat 2019, sesiunea specială
  14. Fiind date două numere a şi b, îl numim pe a sufix al lui b dacă a este egal cu b sau dacă b se poate obţine din a prin alipirea la stânga a unor noi cifre. Exemplu: 12 este sufix al lui 12, iar 15 este sufix al lui 31415. Sa se scrie o functie care verifica daca a este sufix pentru b.

    sau
  15. Fiind date două numere a şi b, îl numim pe a sufix al lui b dacă a este egal cu b sau dacă b se poate obţine din a prin alipirea la stânga a unor noi cifre. Exemplu: 12 este sufix al lui 12, iar 15 este sufix al lui 31415. Sa se scrie o functie care verifica daca a este sufix pentru b. Se dă un număr natural x și un șir de numere naturale. Să se determine ultimul număr din șir care îl care ca sufix pe x.
    #803 NrSufix https://www.pbinfo.ro/?pagina=probleme&id=803
    Variante Bacalaureat 2013


  16. Un număr natural este numit echilibrat dacă suma cifrelor sale de pe poziții pare este un număr par, iar suma cifrelor sale de pe poziții impare este un număr impar. Pozițiile cifrelor sunt numerotate de la dreapta la stânga, astfel: cifra unităților este pe poziția 0, cifra zecilor este pe poziția 1 ș.a.m.d. Subprogramul echilibrat are un singur parametru, n, prin care primește un număr natural (n∈[10,109]). Subprogramul returnează valoarea 1 dacă n este echilibrat sau valoarea 0 în caz contrar.
    #2798
    Echilibrat https://www.pbinfo.ro/?pagina=probleme&id=2798
    Subiect Bacalaureat 2018, sesiunea specială

  17. Se dă un număr natural n despre care știm că are număr impar de cifre. Să se afișeze valoarea obținută prin eliminarea cifrei din mijloc.
    #2661 eliminareciframijloc https://www.pbinfo.ro/?pagina=probleme&id=2661

    Download Cifrele unui numar

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

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

octombrie 2019
L Ma Mi J V S D
 123456
78910111213
14151617181920
21222324252627
28293031