V8 S3 P4

Se consideră definite următoarele subprograme:
– p1 care primeşte prin intermediul parametrului n un număr natural cu cel mult 8 cifre şi
returnează suma cifrelor numărului n

Exemplu: dacă n este egal cu 1234 valoarea returnată de subprogram va fi 10.

-p2 care primeşte prin intermediul parametrului n un număr natural cu cel mult 8 cifre, şi
returnează numărul obţinut prin eliminarea ultimei cifre a lui n.

Exemplu: dacă n este egal cu 1234 valoarea returnată de subprogram va fi 123.

a) Scrieţi numai antetul subprogramelor p1 şi p2.

b) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural nenul n cu cel
mult 8 cifre şi determină, prin apeluri utile ale subprogramelor p1 şi p2, numărul de cifre
egale cu 0 din scrierea lui n. Programul va afişa pe ecran numărul obţinut.
Exemplu: dacă n este 102030, programul va afişa valoarea 3.

Punctul a)

Punctul b)

V8 S3 P3

Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (n≤50) şi care
afişează pe prima linie a fişierului BAC.TXT primele n numere pare, pe a doua linie primele
n-1 numere pare, …, pe linia n primul număr par. Numerele vor fi afişate pe fiecare linie în
ordine crescătoare şi vor fi separate prin câte un spaţiu. (10p.)

Exemplu: dacă n=3 fişierul BAC.TXT va avea conţinutul alăturat.
0 2 4
0 2
0

V7 S3 P4

Se consideră şirul definit de următoarea relaţie de recurenţă:
Captură de ecran_2013-08-12_161857

a) Scrieţi numai antetul unui subprogram sub, care primeşte prin intermediul parametrului n
un număr natural de maximum 8 cifre, şi care returnează cel mai mare termen al şirului de
mai sus mai mic sau cel mult egal cu n.

Exemplu: dacă n=83 atunci subprogramul va returna valoarea 80.

b) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural s (s≤10000000)
şi determină un şir de numere distincte a căror sumă este egală cu s, folosind apeluri utile
ale subprogramului sub. Numerele determinate se vor scrie în fişierul Numere.txt, pe
prima linie a acestuia, separate prin câte un spaţiu.

Exemplu: dacă valoarea citită de la tastatură este 63, atunci fişierul Numere.txt va
conţine valorile următoare, nu neapărat în această ordine: 40 20 3.

Punctul a)

Punctul b)

V7 S3 P3

Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (0<n≤100) şi cele
3*n elemente ale tabloului unidimensional v, numere naturale cu cel mult patru cifre fiecare.
Tabloul este împărţit în trei zone, cu câte n elemente fiecare: prima zonă conţine primele n
elemente din tablou, a doua zonă conţine următoarele n elemente din tablou, restul
elementelor fiind în zona a treia. Programul va interschimba elementele zonei unu cu
elementele zonei trei şi va afişa pe ecran toate elementele tabloului, astfel transformat,
separate prin câte un spaţiu.

De exemplu, pentru n=3 şi v=(1 2 3 4 5 6 7 8 9), se va afişa pe ecran :
7 8 9 4 5 6 1 2 3

V6 S3 P3

Se consideră definite următoarele subprograme:
– s1, cu doi parametri: a, b două numere întregi cu cel mult 4 cifre fiecare; subprogramul
interschimbă valorile a două variabile transmise prin intermediul parametrilor a şi b.
– s2, cu trei parametri: a, un tablou unidimensional cu exact 100 de elemente, numere
întregi cu cel mult 4 cifre fiecare, p, un număr natural (p≤100), q, un număr natural
(q≤100). Subprogramul caută primul element divizibil cu 5 în secvenţa ap,ap+1, …, aq,
şi returnează poziţia acestuia, dacă există un astfel de element, sau valoarea -1 în caz
contrar.
a) Scrieţi numai antetul subprogramului s1.

b) Scrieţi definiţia completă a subprogramului s2.

c) Scrieţi programul C/C++ care citeşte de la tastatură o valoare naturală n (0<n≤100) şi
apoi un tablou unidimensional a, cu n elemente, numere întregi cu cel mult 4 cifre fiecare.
Programul determină, folosind apeluri utile ale subprogramului s2, primul element divizibil
cu 5 (dacă există) şi ultimul element divizibil cu 5 (dacă există) al tabloului a, interschimbă
valorile elementelor găsite, folosind apelul subprogramului s1, şi apoi scrie pe prima linie a
fişierului text BAC.TXT elementele tabloului a, astfel transformat, separate prin câte un
spaţiu, sau valoarea 0 dacă tabloul conţine mai puţin de două elemente divizibile cu 5.

Exemplu: pentru n=7 şi tabloul a=(6,10,4,15,2,5,8), programul va scrie în fişier:
6 5 4 15 2 10 8

Punctul a)

Punctul b)

Punctul c)