Sunteți pe pagina 1din 3

PROBLEME CARE OPEREAZA ASUPRA CIFRELOR UNUI NUMAR

1) Descompunerea unui numar in cifrele sale


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Fie n = nr. de descompus.
Vom utiliza :
d=o variabila pt. a nu-l distruge pe n
c=cifra curenta.
d=n;
do
{
c=d%10;
..prelucram c = cifra curenta...
d/=10;
}while(d);

Obs: Cifrele ies in ordine inversa (pe dos)


2) Formarea unui numar de la stinga la dreapta
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Vom forma numarul in variabila nr. prin adaugari
succesive de cifre.
-initzializare: nr=0;
-de fiecare data knd avem kef sa adaugam o cifra
"cif":
nr = nr*10+cif;
pt n=1234 =>
nr=4321

3) Formarea unui numar de la dreapta la stinga


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Vom forma numarul in variabila nr. prin adaugari succesive de cifre.
Ne mai trebuie o variabila p in care memoram o putere a lui 10 (1, 10, 100, 1000, 10000, ...)
corespunzatoare cifrei de adaugat in fatza,
-initzializare: nr=0;p=1;
-de fiecare data knd avem kef sa adaugam o cifra "cif":
nr = nr + cif*p;
p = p*10;
pt n=1234 => nr=1234
4) Transformarea din baza 10 intr-o baza b
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Este ca separarea cifrelor unui numar, doar ca impartzirile NU se mai fac la 10, ci la
baza b.
!!Daca baza b este >10, nu putem folosi cifrele ca atare, ci ele se identifica prin litere:
A = "cifra 10" B = "cifra 11" .... !!
d=n;
do
{
c=d%b;
..prelucram c = cifra curenta...
d/=b;
}while(d);
obs: cifrele care ies, c, sunt cifrele numarului transformat in baza b, tot
in ordine inversa.

5) Transformarea dintr-o baza b in baza 10 cind dispunem de cifrele din baza b de la stinga la dreapta
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
este ca formarea unui numar de la stinga la dreapta, doar ca inmultzirile NU se mai fac cu cu 10,
ci cu baza.
Vom forma numarul in variabila nr. prin adaugari succesive de cifre.
-initzializare: nr=0;
-de fiecare data knd luam o noua cifra "cif"
nr = nr*b+cif;
6) Transformarea dintr-o baza b in baza 10 cind dispunem de cifrele din baza b de la dreapta la stinga
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
este ca formarea unui numar de la dreapta la stinga, doar ca inmultzirile NU se mai fac cu cu 10, ci cu baza.
Vom forma numarul in variabila nr. prin adaugari succesive de cifre.

In variabila p vom memora o puteru a lui b (1, b, b*b, b*b*b, ...)


corespunzatoare cifrei de curente
-initzializare: nr=0;p=1;
-de fiecare data knd avem kef sa adaugam o cifra "cif":
nr = nr + cif*p;
p = p*b;
7) Descompunerea in factori primi
~~~~~~~~~~~~~~~~~~~~~~~~~
fie nr=nr. de descompus
f=2;//f=factorul curent
while(nr>1)
{
p=0;
while(nr%f==0)
{
p++;
nr/=f;
}
if(p)
...deducem factor=f shi putere=p...
f++;
}