Sunteți pe pagina 1din 2

ATESTAT BILET NR.

Cerințe:

a) Scrieți un subprogram care primește la intrare un număr natural dat, n, de maxim 9 cifre, și întoarce
suma cifrelor acestui număr.

b) Să se utilizeze acest subprogram pentru a calcula suma cifrelor numărului obținut în urma efectuării
sumei S=1+2+3+. . . x , unde x este un număr natural citit de la tastatură.

VARIANTA 1 (timp de executie =4.657 s)

Subprogramul sum cu paramentrul n calculeaza suma cifrelor numarului n astfel:

- Cat timp n este diferit de 0


- Sc (care retine suma cifrelor) este egal cu suma anterioara + ultima cifra a numarului n
- Iar n= n/10 pentru a elimina ultima cifra

Astfel pentru a calcula suma , se iau pe rand fiecare cifra a numarului n , de la ultima la prima si se
adauga la suma , iar subprogramul returneaza aceasta suma

Pentru prima varianta, timpul de executie este mai mic deoarece suma S=1+2+3+…+x se calculeaza dupa
formula S=x*(x+1)/2

Se afiseaza suma cifrelor sumei calculate , apeland subprogramul sum cu paramentrul S (suma primelor
x numere )
VARIANTA 2 (timp de executie =6.922 s)

Pentru a 2a variant , subprogramul ramane identic. Diferenta este modul de calculare al primelor x
numere . In caz ca nu stim formula pentru S=1+2+3+…+x ,calculam suma astfel:

-luam pe rand fiecare numar de la 1 pana la X for (i=1;i<=x;i++)

- si il adaugam la suma : S=S+i

Pentru calcularea si afisarea sumei cifrelor se apeleaza subprogramul ca in VARIANTA 1

S-ar putea să vă placă și