Documente Academic
Documente Profesional
Documente Cultură
Subiectul nr. 1
Fişierul număr.in conţine pe prima linie un număr natural n, format din cel mult 8 cifre, cel puţin o cifră fiind
impară.
Se consideră subprogramele:
• S1 cu doi parametri, care primeşte prin intermediul parametrilor a şi b două numere naturale formate
fiecare din cel mult 8 cifre; subprogramul determină eliminarea cifrei unităţilor numărului conţinut de
parametrul a, mutând-o la sfârşitul numărului conţinut de parametrul b, returnând prin intermediul
parametrilor a şi b noile numere obţinute. De exemplu, pentru valorile 21134 şi 61 ale parametrilor a şi b,
în urma executării subprogramului S1 valorile returnate prin intermediul parametrilor vor fi 2113 şi 614.
• S2 cu un singur parametru k prin intermediul căruia primeşte un număr natural, k>1; subprogramul
returnează numărul natural obţinut prin eliminarea fiecărei cifre pare din numărul k. De exemplu, pentru
k=12345, subprogramul S2 va returna 135, iar pentru k=177 subprogramul S2 va returna 177.
Cerinţe:
Subiectul nr. 2
Fişierul date.in conţine două linii. Pe prima linie a fişierului este scris un număr natural n (1≤n≤100), iar pe a
doua linie sunt scrise n numere naturale, formate fiecare din cel mult 4 cifre, separate prin câte un spaţiu.
Se consideră subprogramele:
• S1 cu un singur parametru k prin intermediul căruia primeşte un număr natural nenul, 1<k<10000;
subprogramul returnează numărul divizorilor proprii ai numărului k;
• S2 cu doi parametri, care primeşte prin intermediul parametrilor:
- p şi q , două numere naturale (1≤p<q≤100);
- v,un tablou unidimensional format din cel mult 100 componente componente, cu indicii de la 1, ce
memorează numere naturale, cu cel mult 4 cifre fiecare.
Subprogramul determină ordonarea descrescătoare doar a secvenţei din vector formată din valorile
componentelor v[p], v[p+1], v[p+2],…,v[q], restul componentelor tabloului nemodificându-se.
Cerinţe:
Se consideră subprogramele:
• S1 cu un singur parametru k prin intermediul căruia primeşte un număr natural nenul cu cel mult 6 cifre, k>9;
subprogramul returnează numărul format prin eliminarea primei şi ultimei cifre a valorii parametrului k;
Exemplu. Pentru k=12345 subprogramul returnează valoarea 234.
• S2 cu un singur parametru k prin intermediul căruia primeşte un număr natural nenul cu cel mult 6 cifre, k>9;
subprogramul returnează cel mai mic număr prim mai mare sau egal cu k.
Cerinţe:
Subiectul nr. 4
Fişierul date.in conţine un text format din cel mult 250 de caractere, scris pe o singură linie. Cuvintele din text
sunt separate prin câte un spaţiu, iar fiecare cuvânt este format din cel mult 20 caractere, doar literele mici ale
alfabetului englez. Se consideră subprogramul:
• S1 care primeste prin intermediul singurului său parametru s un cuvânt şi returnează numărul de vocale
(a,e,i,o,u) conţinute de cuvântul s;
Cerinţe:
Se consideră subprogramele:
• S1 cu un singur parametru, care determină, în urma apelului, citirea textului din fişierul date.in şi
returnează prin intermediul parametrului s textul citit;
• S2 cu doi parametri, care primeşte prin intermediul parametrilor:
- c un caracter literă mică;
- s un şir de caractere format din cel mult 250 de caractere.
Subprogramul returnează numărul de apariţii ale caracterului c în şirul s.
Cerinţe:
aeimn
Subiectul nr. 6
Fişierul date.in conţine un text format din cel mult 250 de caractere, scris pe o singură linie. Cuvintele din text
sunt separate prin câte un spaţiu, iar fiecare cuvânt este format din cel mult 20 caractere, doar literele mici ale
alfabetului englez.
Se consideră subprogramele:
• S1 care primeşte prin intermediul singurului său parametru s un cuvânt şi returnează cuvântul obţinut prin
înlocuirea primei litere din cuvântul primit cu litera mare corespunzătoare;
• S2 care primeste prin intermediul singurului său parametru s un cuvânt din text şi furnizează prin intermediul
parametrului s cuvântul obţinut prin oglindirea acestuia. De exemplu, pentru cuvântul abcd primit prin
intermediul parametrului s, subprogramul returnează cuvântul: dcba.
Cerinţe:
Se consideră subprogramele:
• S1 cu doi parametri n şi a, care determină, în urma apelului, citirea numerelor din fişierul Matrice.in şi
returnarea prin intermediul parametrului n a numărului de linii ale matricei din fişier, iar prin intermediul
parametrului a returnarea unui tablou bidimensional pătratic cu n linii care memorează valorile
elementelor matricei A din fişierul de intrare;
• S2 cu doi parametri v şi k, care primeşte prin intermediul parametrilor:
- v un tablou unidimensional cu cel mult 30 de elemente (valorile memorate de elementele tabloului
fiind numere naturale, formate fiecare din cel mult două cifre);
- k un număr natural (2<k≤30) reprezentând numărul efectiv de elemente ale tabloului v.
Subprogramul returnează suma tuturor valorilor elementelor tabloului v.
Cerinţe:
100
Subiectul nr. 8
Fişierul date.in conţine cel mult 1000 de numere naturale, fiecare număr fiind format din cel mult patru cifre,
numerele fiind scrise pe o singură linie, separate prin câte un spaţiu.
Cerinţe:
Exemplu. Dacă fişierul date.in are 123 10 35 899 1202 145 5000
conţinutul alăturat, atunci fişierul date.out
va avea următorul conţinut:
10 1202
Subiectul nr. 9
Fişierul date.in conţine pe prima linie un număr natural nenul n, 1≤n≤100, iar pe cea de-a doua linie n numere
naturale de cel mult 9 cifre fiecare, separate prin câte un spaţiu.
Se consideră subprogramele:
• S1, care primeşte prin intermediul parametrului x, un număr natural de cel mult 9 cifre şi returnează prima
(cea mai semnificativă) cifră a sa;
• S2, care primeşte prin intermediul parametrilor:
- a, un tablou unidimensional cu cel mult 100 de componente care memorează fiecare câte un număr
natural de cel mult 9 cifre;
- n, numărul efectiv de componente ale tabloului a, n<101.
Subprogramul S2 ordonează descrescător elementele vectorului a.
Cerinţe:
a) Scrieţi definiţia completă a subprogramului S1;
b) Scrieţi definiţia completă a subprogramului S2;
c) Scrieţi un program principal C++ care, folosind apeluri utile ale subprogramelor S1 şi S2, să citească
datele din fişierul date.in şi care să scrie în fişierul date.out pe linii separate numerele aflate pe cea de-a doua
linie a fişierului date.in care au prima cifră egală cu ultima, în ordine descrescătoare. În cazul în care nu există
astfel de numere, programul va scrie în fişierul date.out mesajul nu exista pe prima linie a acestuia.
Exemplu. Dacă fişierul date.in are conţinutul 6
alăturat, programul va scrie în fişierul date.out 18 5415 7 88 100 123456781
următoarele:
123456781
5415
88
7
Subiectul nr. 10
Un număr natural nenul x se numește pătrat perfect dacă există un alt număr natural nenul y, cu proprietatea
că y*y = x. Fişierul date.in conţine pe prima linie un număr natural nenul n, 1≤n≤100, iar pe cea de-a doua linie
n numere naturale de cel mult 9 cifre fiecare, separate prin câte un spațiu.
Se consideră subprogramele:
• S1, care primeşte prin intermediul parametrului x, un număr natural de cel mult 9 cifre și returnează cel
mai mare număr natural nenul al cărui pătrat este mai mic sau egal cu x
• S2, care primeşte prin intermediul parametrilor:
− a, un tablou unidimensional cu cel mult 100 de componente care memorează fiecare câte un
număr natural de cel mult 9 cifre;
− n, numărul efectiv de componente ale tabloului a, n<101.
Subprogramul S2 afișează pe ecran, pe linii separate, valorile memorate de componentele vectorului a, în
ordine inversă față de cea a pozițiilor acestora în tablou.
Cerinţe:
a) Scrieţi definiţia completă a subprogramului S1.
b) Scrieţi definiţia completă a subprogramului S2.
c) Scrieţi un program principal C++ care, folosind apeluri utile ale subprogramelor S1 şi S2, să citească
datele din fişierul date.in şi care să scrie pe ecran, pe linii separate, numerele aflate pe cea de-a doua linie a
fișierului date.in care sunt pătrate perfecte, în ordine inversă față de cea în care au fost citite. În cazul în care
nu există astfel de numere, programul va scrie pe ecran mesajul nu exista.
Subiectul nr. 11
Fişierul date.in conţine pe prima linie un număr natural nenul n, 1≤n≤100, iar pe cea de-a doua linie n numere
naturale de cel mult 9 cifre fiecare, separate prin câte un spațiu.
Se consideră subprogramele:
• S1, care primeşte prin intermediul parametrului x, un număr natural de cel mult 9 cifre și returnează
numărul de divizori primi ai lui x.
Cerinţe:
a) Scrieţi definiţia completă a subprogramului S1.
b) Scrieţi definiţia completă a subprogramului S2.
c) Scrieţi un program principal C++ care, folosind apeluri utile ale subprogramului S1 , să citească
datele din fişierul date.in şi care să scrie pe ecran, pe linii separate, numerele aflate pe cea de-a doua linie a
fișierului date.in care au număr maxim de divizori primi în ordinea în care au fost citite.
Fişierul date.in conţine pe prima linie două numere naturale nenule m (1≤m≤100) și n, (1≤n≤100), iar pe
următoarele m linii câte n numere întregi, cu cel mult patru cifre fiecare, separate prin câte un spațiu,
reprezentând elementele unei matrice cu m linii și n coloane.
Se consideră subprogramele:
• S1, cu parametrii:
- a, un tablou bidimensional cu cel mult 100 de linii și cel mult 100 de coloane de tip integer/int;
- m, numărul efectiv de linii ale matricei a;
- n, numărul efectiv de coloane ale matricei a.
Subprogramul S1 citește din fișierul date.in și furnizează prin intermediul parametrilor săi numărul de linii
și respectiv coloane, precum și elementele unei matrice.
• S2, care primeşte prin intermediul parametrilor:
- a, un tablou bidimensional cu cel mult 100 de linii și cel mult 100 de coloane
- m, numărul efectiv de linii ale matricei a
- c, indicele unei coloane a matricei a.
Subprogramul S2 returnează numărul de elemente pare ale coloanei c a matricei a.
Cerinţe:
a) Scrieţi definiţia completă a subprogramului S1.
b) Scrieţi definiţia completă a subprogramului S2.
c) Scrieţi un program C++ care, folosind apeluri utile ale subprogramelor S1 şi S2, să citească datele din
fişierul date.in şi care să scrie pe ecran, cel mai mare indice al unei coloane cu număr minim de elemente pare.
Liniile și coloanele matricei vor fi numerotate începând cu 1.
Subiectul nr. 13
Fişierul date.in conţine pe prima linie două numere naturale nenule m (1≤m≤100) și n, (1≤n≤100), iar pe
următoarele m linii câte n numere întregi, cu cel mult 4 cifre fiecare, separate prin câte un spațiu, reprezentând
elementele unei matrice cu m linii și n coloane.
Se consideră subprogramele:
• S1, cu parametrii:
- a, un tablou bidimensional cu cel mult 100 de linii și cel mult 100 de coloane, de tip integer/int;
- m, numărul efectiv de linii ale matricei a, 1≤m≤100;
- n, numărul efectiv de coloane ale matricei a, 1≤n≤100.
Subprogramul S1 citește numerele din fișierul date.in și furnizează prin intermediul parametrilor săi
numărul de linii și respectiv coloane, precum și elementele unei matrice.
• S2, care primeşte prin intermediul parametrilor:
- a, un tablou bidimensional cu cel mult 100 de linii și cel mult 100 de coloane de tip integer/int;
- m, numărul efectiv de linii ale matricei a, 1≤m≤100;
- c, indicele unei coloane a matricei a, 1≤c≤100.
Subprogramul S2 returnează ultima cifră a produsului elementelor coloanei c din matricea a.
Cerinţe:
a) Scrieţi definiţia completă a subprogramului S1.
b) Scrieţi definiţia completă a subprogramului S2.
c) Scrieţi un program principal C++ care, folosind apeluri utile ale subprogramelor S1 şi S2, să citească
datele din fişierul date.in şi care să scrie pe ecran, cel mai mic indice al unei coloane cu ultima cifră a produsului
elementelor maximă. Liniile și coloanele matricei vor fi numerotate începând cu 1.
Exemplu. Dacă fişierul date.in are conţinutul alăturat, 2 4
programul va scrie pe ecran: 12 95 8 158
3 27 4 101 3181
Subiectul nr. 14
Fişierul date.in conţine două linii. Pe prima linie a fişierului este scris un număr natural n (1≤n≤10), iar pe a
doua linie sunt scrise n numere naturale, formate fiecare din cel mult 4 cifre, separate prin câte un spaţiu.
Se consideră subprogramele:
• S1 care primeşte prin intermediul singurului său parametru x un număr natural de maximum 4 cifre;
subprogramul returnează TRUE/1 dacă cifrele numărului primit prin parametrul x sunt în ordine strict
crescătoare, altfel va returna FALSE/0;
• S2 care primeşte prin intermediul singurului său parametru x un număr natural cu cel mult 4 cifre;
subprogramul returnează prima cifră a numărului primit prin parametrul x. De exemplu, pentru x=1234,
subprogramul va returna cifra 1.
Cerinţe:
Subiectul nr. 15
Fişierul date.in conţine un text format din cel mult 255 de caractere, scris pe o singură linie. Cuvintele din text
sunt separate prin unul sau mai multe spaţii, iar fiecare cuvânt este format din cel puţin 3 şi cel mult 50
caractere, doar litere mici ale alfabetului englez.
Se consideră subprogramele:
• S1 care primeşte prin intermediul singurului său parametru s, un şir de caractere format din maximum 50
de caractere doar litere mici, şi care modifică şirul s prin eliminarea primului caracter din şir;
• S2 care primeşte prin intermediul singurului său parametru s, un şir de caractere format din maximum 50
de caractere şi, care, modifică şirul prin eliminarea ultimului caracter din acesta.
Cerinţe:
Subiectul nr. 16
Fişierul numere.in conţine pe prima linie un număr natural nenul n, n<100, iar pe linia a doua, despărţite prin
câte un spatiu, n numere naturale având cel mult 9 cifre fiecare.
Se consideră subprogramele:
• S1, care prin intermediul parametrului p primeşte un număr natural cu cel mult 9 cifre şi returnează
răsturnatul (oglinditul) acestui număr.
Exemplu: pentru p=617032 subprogramul va returna valoarea 230716.
- un număr natural nenul n reprezentând numărul efectiv de componente ale vectorului v, n<101.
Subprogramul determină afişarea pe ecran, în linie, a valorilor memorate în vector, separate prin câte un
spaţiu.
Cerinţe:
Se afișează:
74311
Tabloul are 1 pătrat perfect.
18. Se consideră un șir de n numere întregi distincte (1<=n<=20) și două numere întregi
a și b.
a) Să se afișeze pe ecran toate elementele șirului care nu sunt în intervalul închis
ce se poate forma cu numerele a și b.
b) Să se ordoneze crescător numai elementele situate între elementul minim și
elementul maxim din șirul dat și să se afișeze pe ecran șirul obținut după ordonare.
Datele de intrare se vor citi din fișierul date.txt, astfel:
-pe prima linie se găsește n;
-pe linia a doua se găsesc cele n elemente ale șirului;
-pe linia a treia se găsesc valorile lui a, respectiv b.
Exemplu:
Fișierul date.txt:
7
3 1 8 7 2 4 -1
5 3
Se afișează pe ecran:
Elementele din fișier pot forma o mulțime
2 3
20. Se citește de la tastatură un număr natural n (0<n<100). Se cere:
a) Să se verifice dacă n este număr perfect. Un număr este perfect dacă este
egal cu suma tuturor divizorilor lui, afară de numărul însuși.
b) În fișierul date.in se găsesc, pe o singură linie, numere strict pozitive separate
prin câte un spațiu. Să se afișeze elementele autopomorfice ale șirului.
Numim număr autopomorfic o valoare care este sufix al pătratului său.
Exemplu:
n=6 se afișează mesajul NUMARUL ESTE PERFECT.
Fișierul date.in:
16 6 832 25 11 514
Pe ecran se afișează elementele 6 și 25.
22. Pe prima linie a fișierului date.in se găsesc numere naturale nenule.Se cere:
a) Pentru fiecare număr impar din fișier să se afișeze cel mai mare număr care
se poate forma din cifrele lui.
b) Să se verifice dacă numerele din fișierul de intrare reprezintă o progresie
aritmetică;în caz afirmativ să se afișeze primul element și rația, altfel să se
afișeze un mesaj corespunzător.
Datele de ieșire se vor scrie pe ecran, astfel:
-pe prima linie, elementele determinate la punctual a);
-pe a doua linie, r[spunsul cerin’ei b).
Exemplu:
Fișierul date.in:
31 38 45 52 59 66
Se afișează pe ecran:
31 38 54 52 95 66
Primul termen este 31 și rația 7.
23. Fie un tablou bidimensional cu n linii și n coloane. Se cere:
a) Să se afișeze transpusa matricei;
b) Să se afișeze câte perechi de numere prime ele sunt pe diagonala secundară
a matricei inițiale.
Datele de intrare se vor citi din fișierul date.in, astfel:
-pe prima linie se găsește n;
Pe următoarele n linii se găsesc câte n numere ce reprezintă elementele matricei.
Exemplu:
Fișierul de intrare: Se afișează: 1 5 9 13
4
2 6 10 14
1 2 3 4 3 7 11 15
5 6 7 8 4 8 12 16
9 10 11 12 5perechi
13 14 15 16
1 32 4 5 b)282 2
61 282 9 10
11 13 14 15
25. În fișierul prenume.txt se găsesc, pe o singură linie, prenumele unor elevi separate
prin câte un spațiu.
Să se ordoneze alfabetic( fără să se facă distincție între litere mari și mici) și să se
afișeze șirul de nume astfel obținut;
Să se afișeze numărul de fete din fișier, știind că numai prenumele fetelor se termină
cu litera a.
Pe ecran se afișează:
Ciprian Gabriel IOANA maria Marius Silvia Vlad
3
26. Subprogramul sub, cu trei parametri, primeşte prin intermediul parametrului:
– v un tablou unidimensional cu cel mult 100 de componente ce memorează numere întregi
cu cel mult 4 cifre;
– n un număr natural nenul mai mic sau egal cu 100 ce reprezintă numărul efectiv de
componente ale tabloului primit prin intermediul parametrului v;
– a un număr întreg cu cel mult 4 cifre.
Subprogramul sub returnează numărul componentelor tabloului primit prin intermediul
parametrului v ale căror valori sunt strict mai mici decât valoarea parametrului a. Exemplu:
pentru valorile n=5, v=(1,21,9,21,403), a=20 ale parametrilor, în urma apelului,
subprogramului sub va returna valoarea 2.
a) Scrieţi definiţia completă a subprogramului sub.
b) Să se scrie un program C/C++ care să citească de la tastatură un număr natural nenul n
(n≤100) şi n numere întregi, fiecare având cel mult 4 cifre, şi care, folosind apeluri utile ale
subprogramului sub, să afişeze pe ecran mesajul DA dacă oricare două dintre cele n
numere întregi citite sunt distincte două câte două, sau mesajul NU în caz contrar.
Exemplu: pentru n=6 şi cele n numere citite de la tastatură: 47 183 69 8 134 -56
se va afişa pe ecran mesajul DA.
29. a) Scrieţi doar antetul funcţiei sum care primeşte ca parametru un număr natural x cu
maximum 9 cifre şi returnează suma divizorilor numărului x.
Exemplu: sum(6) are valoarea 12 (=1+2+3+6).
b) Să se scrie un program C/C++ care citeşte de la tastatură un număr natural nenul n şi
apoi n numere naturale cu maximum 9 cifre fiecare. Programul calculează, folosind apeluri
ale funcţiei sum, şi afişează pe ecran câte numere prime conţine şirul citit.
Exemplu: pentru n=5 şi valorile 12 3 9 7 1 se va afişa pe ecran valoarea 2 (în şirul date
există două numere prime şi anume 3 şi 7).
30. Scrieţi definiţia completă a subprogramului multiplu care are 3 parametri: a, prin care
primeşte un tablou unidimensional cu maximum 100 de numere naturale mai mici decât
1000, n, numărul de elemente ale tabloului şi k, un număr natural (k≤9). Subprogramul
returnează numărul de elemente din tablou care sunt multipli ai numărului k şi au ultima cifră
egală cu k. Exemplu: dacă n=6, a=(2,273,63,83,93,123), iar k=3, subprogramul va returna
valoarea 4.
31. Scrieţi definiţia completă a subprogramului interval care are 2 parametri prin care
primeşte un tablou unidimensional cu maximum 100 de numere naturale mai mici decât 1000
şi numărul de elemente din tabloul unidimensional. Subprogramul returnează numărul de
elemente din tabloul unidimensional care aparţin intervalului închis determinat de primul şi
respectiv ultimul element al tabloului. Exemplu: dacă tabloul are 6 elemente şi este de forma
(12,27,6,8,9,2), subprogramul va returna valoarea 5.
32. Scrieţi definiţia completă a subprogramului count care are 2 parametri prin care
primeşte un tablou unidimensional cu maximum 100 de numere reale şi numărul de
elemente din tablou. Subprogramul returnează numărul de elemente din tabloul
unidimensional care sunt mai mari sau cel puţin egale cu media aritmetică a tuturor
elementelor din tablou. Exemplu: dacă tabloul are 6 elemente şi este de forma (12, 7.5, 6.5,
3, 8.5, 7.5), subprogramul va returna valoarea 4.
34. Scrieţi definiţia completă a unui subprogram i_prim care primeşte prin singurul său
parametru, n, un număr natural din intervalul [2,30000] şi returnează diferenţa minimă p2-p1
în care p1 şi p2 sunt numere prime şi p1<=n<=p2. Exemplu: dacă n=20 atunci i_prim(n)=4,
valoare obţinută pentru p1=19 şi p2=23.
35. a) Scrieţi definiţia completă a subprogramului shift care primeşte prin intermediul
parametrului n o valoare naturală nenulă (n≤100), iar prin intermediul parametrului x, cele n
componente ale unui tablou unidimensional. Fiecare componentă a acestui tablou este un
număr întreg care are cel mult 4 cifre. Subprogramul permută circular cu o poziţie spre
stânga elementele tabloului x şi furnizează tabloul modificat tot prin parametrul x.
Exemplu: dacă înainte de apel n=4 şi x=(1,2,3,4), după apel x=(2,3,4,1).
b) Scrieţi un program C/C++ care citeşte de la tastatură o valoare naturală nenulă n
(n<=100), apoi cele n elemente ale unui tablou unidimensional x. Programul va inversa
ordinea elementelor tabloului x folosind apeluri utile ale subprogramului shift şi va afişa pe
ecran, separate prin câte un spaţiu, elementele tabloului rezultat în urma acestei prelucrări.
Exemplu: dacă se citesc pentru n valoarea 5, iar tabloul x este (1,2,3,4,5) programul va
determina ca x să devină (5,4,3,2,1).
42. Scrieţi definiţia completă a subprogramului nr_prim care are ca parametru un număr
natural x şi returnează cel mai mic număr prim, strict mai mare decât x. Exemplu: pentru
x=25 subprogramul returnează numărul 29, iar pentru x=17 valoarea returnată va fi 19.