V9 S3 P3

Se consideră definite două subprograme:
– Subprogramul s1, cu 3 parametri, care primeşte prin intermediul parametrului a un tablou
unidimensional cu exact 100 de elemente, numerotate de la 0 la 99, numere întregi de cel
mult 4 cifre fiecare, iar prin intermediul parametrilor p şi q (0≤p<q<100) poziţiile a două
elemente ale tabloului. Subprogramul furnizează prin intermediul parametrului p poziţia
primului element par (dacă există), şi prin intermediul parametrului q poziţia ultimului
element impar (dacă există), din secvenţa ap,ap+1, …, aq. Dacă această secvenţă nu
conţine niciun element par subprogramul va furniza prin intermediul lui p valoarea -1, iar
dacă nu conţine niciun element impar, va furniza prin intermediul lui q valoarea -1.

– Subprogramul s2, cu doi parametri, a şi b, două numere întregi cu cel mult 4 cifre fiecare;
subprogramul interschimbă valorile a două variabile transmise prin intermediul parametrilor
a şi b.
a) Scrieţi numai antetul subprogramului s2.

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

c) Scrieţi un program C/C++ care:
– citeşte de la tastatură un număr natural nenul n (0≤n<100), apoi cele n elemente ale unui
şir a. Fiecare dintre aceste elemente este un număr întreg cu cel mult 4 cifre şi cel puţin un
element al şirului este par;
– determină rearanjarea elementelor şirului astfel încât toate valorile pare să fie plasate la
sfârşitul şirului a, folosind apeluri utile ale subprogramelor s1 şi s2;
– scrie elementele şirului rezultat în urma acestei transformări pe o singură linie a fişierului
text BAC.TXT, separate prin câte un spaţiu.

Exemplu: pentru n=5 şi a=(2,3,4,7,5) fişierul ar putea avea conţinutul:
7 5 3 4 2.

Punctul a)

Punctul b)

Punctul c)

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)

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)

V5 S3 P3

Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n cu cel mult 8 cifre
(n≥10) şi care creează fişierul text NR.TXT ce conţine numărul n şi toate prefixele nenule
ale acestuia, pe o singură linie, separate prin câte un spaţiu, în ordine descrescătoare a
valorii lor.

Exemplu: pentru n=10305 fişierul NR.TXT va conţine numerele:
10305 1030 103 10 1