Sunteți pe pagina 1din 5

SUBIECTE ATESTAT PROGRAMARE – PROBLEME PROPUSE

An școlar 2019 – 2020

1. Se citește de la tastatură un șir de n numere naturale (n≤100) cu cel mult 9 cifre fiecare. Să se
transforme șirul, astfel încât numerele multiplu de 3 să fie eliminate.
Exemplu: pentru n=5 iar șirul conține numerele 1 2 3 4 5 se va afișa 1 2 4 5

2. Se citește de la tastatură un șir de n numere naturale (n≤100) cu cel mult 4 cifre fiecare. Să se
determine toate perechile de elemente din șir cu proprietatea că produsul lor este atât pătrat
perfect, cât și cub perfect. Dacă nu există nicio astfel de pereche, să se afișeze mesajul FARA
SOLUTIE.
Exemplu: pentru n=5 iar șirul conține numerele 18 20 2592 32 44 se va afișa (18, 2592)
(explicație: 18*2592=46656=2162=363)

3. Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (2<n≤15) şi


construieşte în memorie o matrice pătrată cu n linii şi n coloane în care:
- ultima linie conţine, în ordine, numerele 1,2,3,..,n
- elementele situate deasupra diagonalei principale sunt nule
- oricare alt element este obţinut prin însumarea elementelor vecine cu el, aflate pe linia imediat
următoare, pe aceeaşi coloană cu el sau pe una din coloanele alăturate.
Programul va afişa pe ecran matricea obţinută pe n linii, elementele fiecărei linii fiind separate
prin câte un spaţiu.
Exemplu: pentru n=4 pe ecran se va afişa:
27 0 0 0
9 18 0 0
3690
1234

4. Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (2<n≤15) şi


construieşte în memorie o matrice pătrată cu n linii şi n coloane în care:
- ultima linie conţine, în ordine, numerele 1,2,3,..,n
- elementele situate deasupra diagonalei secundare sunt nule
- oricare alt element este obţinut prin însumarea elementelor vecine cu el, aflate pe linia imediat
următoare, pe aceeaşi coloană cu el sau pe una din coloanele alăturate.
Programul va afişa pe ecran matricea obţinută pe n linii, elementele fiecărei linii fiind separate
prin câte un spaţiu.
Exemplu: pentru n=4 pe ecran se va afişa:
0 0 0 38
0 0 22 16
0697
1234

5. Scrieţi un program C++ care citeşte de la tastatură un text de maxim 100 de caractere, litere
mici ale alfabetului englez, în care cuvintele sunt separate prin unul sau mai mulţi separatori (.,: )
– punct, virgulă, spațiu, două puncte. Să se afişeze pe câte o linie cuvintele care conţin cel puţin
2 vocale alăturate și au lungimea pară. Dacă nu există astfel de cuvinte se va afișa mesajul „Nu
exista”.
Exemplu: pentru șirul „in trei feluri se pastreaza un prieten: a-l onora in prezenta, a-l lauda in
absenta si a-l ajuta la nevoie.” se va afișa: trei
Nevoie
6. Determinaţi numerele prime p şi q gemene, primele mai mari decât numărul natural nenul n
(2≤n≤1000000000), citit de la tastatură. Două numere prime p şi q sunt gemene dacă |q-p|=2.
Exemplu: pentru n=50 se va afișa p=59 q=61

7. Scrieţi programul C/C++ care citeşte de la tastatură două numere naturale m şi n (1≤m≤50,
1≤n≤50) şi m*n numere naturale de cel mult 5 cifre ce reprezintă elementele unui tablou
bidimensional, şi afişează pe ecran ultima cifră a produsului elementelor pozitive aflate pe linii
cu numere de ordine pare şi coloane cu numere de ordine impare. Numerotarea liniilor, respectiv
a coloanelor se va face începând cu valoarea 1. Dacă nu există elemente pozitive aflate pe linii
cu numere de ordine pare şi coloane cu numere de ordine impare, se va afişa mesajul NU
EXISTA.
Exemplu: pentru m=4, n=4 şi matricea de mai jos se va afişa 5 (care reprezintă ultima cifră a
valorii 355=5*71).
11 -21 31 41
5 -61 71 -81
91 11 21 31
-11 31 -41 0

8. Numerele a şi b se numesc asemenea dacă scrierile lor în baza 10 conţin aceleaşi cifre (de
exemplu 2113 şi 323121 sunt asemenea). Determinaţi dacă două numere naturale a și b, citite de
la tastatură, cu cel mult 9 cifre fiecare, sunt asemenea.
Exemplu: pentru a=125 și b=5211 se va afișa DA
pentru a=125 și b=5111 se va afișa NU

9. Se citeşte de la tastatură un şir de numere naturale, terminat cu valoarea 0. Fiecare număr din
șir are cel mult 9 cifre. Să se determine numărul cifrelor 0 în care se termină produsul numerelor
citite.
Exemplu: Dacă se citește șirul 2 25 4 777777 323232323 16 100 0 se va afișa 4 (produsul se
termină în 4 cifre 0)

10. Afişaţi primii k termeni din şirul 1, 2, 3, 4, 2, 5, 6, 2, 3, 7, 8, 2, 4, 9, 3, 10, 2, 5, ... , obţinut


din şirul numerelor naturale, în care fiecare număr compus n este urmat de toţi divizorii săi
proprii.
Exemplu: pentru k=12 se va afișa 1 2 3 4 2 5 6 2 3 7 8 2

11. Calculaţi suma primelor n numere naturale prime. n este un număr natural, mai mic decât 50,
citit de la tastatură.
Exemplu: pentru n=5 se va afișa 28

12. Scrieţi un program C++ care citeşte de la tastatură un text de maxim 100 de caractere, litere
mici ale alfabetului englez, în care cuvintele sunt separate prin unul sau mai mulţi separatori (.,: )
– punct, virgulă, spațiu, două puncte. Să se afişeze pe câte o linie cuvintele care conţin cel puţin
2 vocale alăturate și au lungimea impară. Dacă nu există astfel de cuvinte se va afișa mesajul
„Nu exista”.
Exemplu: pentru șirul „in trei feluri se pastreaza un prieten: a-l onora in prezenta,a-l lauda in
absenta si a-l ajuta la nevoie.” se va afișa: pastreaza
prieten
lauda

13. Se citesc numere naturale până la întâlnirea valorii zero (valoarea zero nu se va prelucra). Să
se afişeze numărul format din cifra minimă a fiecărui număr.
Exemplu: 325 64 123 72 0 se va afişa numărul 2412
14. Scrieţi programul C/C++ care citeşte de la tastatură un număr n (1≤n≤100) și n numere
naturale de maxim 9 cifre. Programul determină cel mai mic număr care se poate forma din
cifrele nenule ale elementului minim și elementului maxim.
Exemplu: pentru n=6 și numerele 271 109 28 713 14 36 se afișează 11347

15. Scrieţi programul C/C++ care citeşte de la tastatură un număr n (1≤n≤100) și n numere
naturale de maxim 9 cifre. Programul determină cel mai mare număr care se poate forma din
cifrele distincte ale elementului minim și elementului maxim.
Exemplu: pentru n=6 și numerele 271 109 28 713 14 36 se afișează 7431

16. Scrieţi programul C/C++ care citeşte de la tastatură un număr n (1≤n≤100) și n numere
naturale de maxim 9 cifre. Programul determină pentru fiecare număr impar cel mai mare număr
care se poate forma din cifrele lui. Numerele se vor afișa pe o linie, cu spațiu între ele. Dacă nu
există astfel de numere se va afișa mesajul „Nu exista”.
Exemplu: pentru n=6 și numerele 371 38 453 52 589 66 se va afișa 731 543 985

17. Scrieţi programul C/C++ care citeşte de la tastatură două numere naturale m şi n (1≤m≤50,
1≤n≤50) şi m*n numere naturale de cel mult 5 cifre ce reprezintă elementele unui tablou
bidimensional, şi afişează pe ecran cel mai mare număr care se poate forma din cifrele distincte
ale elementului minim și elementului maxim.
Exemplu: pentru m=3, n=4 şi matricea de mai jos
23 456 16 571
17 43 45 65
34 92 71 19 se va afişa 751

18. Scrieţi programul C/C++ care citeşte de la tastatură două numere naturale m şi n (1≤m≤50,
1≤n≤50) şi m*n numere naturale de cel mult 5 cifre ce reprezintă elementele unui tablou
bidimensional, şi afişează pe ecran cel mai mic număr care se poate forma din cifrele nenule ale
elementului minim și elementului maxim.
Exemplu: pentru m=3, n=4 şi matricea de mai jos
23 456 16 571
17 43 45 65
34 92 71 19 se va afişa 11577

19. Se citesc de la tastatură două şiruri de litere mici ale alfabetului englez, de lungime maxim
100 fiecare. Să se afișeze literele care apar de acelaşi număr de ori în cele două şiruri sau mesajul
NU EXISTA dacă șirurile nu conțin litere cu același număr de apariții.
Exemplu: pentru șirurile msbsshbl și skxbbsmmsl rezultatul afișat trebuie să fie s b l (nu
obligatoriu în această ordine)

20. Fie doi vectori a și b cu m respectiv n elemente numere întregi (m, n≤100), citite de la
tastatură. Să se afișeze câte din componentele vectorului a sunt strict mai mici decât toate
componentele vectorului b.
Exemplu: m=5
a=(3, 10, -2, 4, -3)
n=4
b=(3, 9, 7, 5) se va afișa 2
21. Se citește de la tastatură un număr natural k, apoi se citesc n numere naturale. Să se afișeze
numerele care conțin cifra k și sunt divizibile cu k.
Exemplu: dacă se citesc k=5, n=7 și numerele 2543 525 125 2100 55 154 15 se va afișa 525 125
55 15.

22. Să se verifice dacă cele n (3≤n≤100) elemente întregi ale unui vector v pot forma, în ordinea
din vector, o progresie aritmetică. În caz afirmativ să se afișeze rația, în caz negativ să se afișeze
mesajul NU.
Exemple: pentru n=5 și v=(3, 10, -2, 4, -3) se va afișa NU
pentru n=5 și v=(3, 5, 7, 9, 11) se va afișa 2

23. În fişierul atestat.in sunt memorate cel mult 1000 de numere naturale. Afişaţi în fişierul
atestat.out numărul care care are prima cifră maximă. Dacă există mai multe numere cu prima
cifră maximă se va afişa cel mai mic dintre acestea.
Exemplu:
atestat.in atestat.out
75 35 825 53 83 41 83

24. Se citesc numere de la tastatură până la apariția lui zero (valoarea zero nu se va prelucra). Să
se determine câte perechi de elemente citite consecutiv au acelaşi număr de cifre. Programul
afişează în fişierul atestat.out numărul x, reprezentând numărul de perechi citite care respectă
condiția cerută.
Exemplu:125 722 23 4 56 98 7 0
atestat.out:
2

25. Se consideră un vector cu n numere naturale. Determinaţi şi afişati pe ecran câte dintre
perechile de elementele egal depărtate de capetele vectorului sunt prime între ele.
Exemplu: pentru n=6 și vectorul (12, 14, 6, 49, 15, 21) se va afișa 2

26. Se dă un şir cu n elemente, numere naturale. Să se verifice dacă toate elementele şirului
conțin numai cifre impare. Programul afișează pe ecran un mesaj corespunzător.
Exemplu: pentru n=5 și vectorul (131, 571, 35, 127, 9) se va afișa mesajul “Elementele sirului
nu contin numai cifre impare"

27. Se citeşte de la tastatură un număr natural p și un vector cu n elemente numere naturale.


Ordonați descrescător primele p elemente ale vectorului și crescător ultimele n-p elemente.
Exemplu: pentru p=4, n=10 și vectorul (4, 7, 9, 5, 7, 9, 4, 1, 11, 3) se va afișa vectorul (9, 7, 5, 4,
1, 3, 4, 7, 9, 11)

28. Se citesc din fișierul text atestat.in, de pe prima linie un număr natural nenul n, iar de pe
următoarea linie n numere naturale, separate prin câte un spațiu. Să se scrie în fișierul atestat.out
numerele care au în scrierea lor în sistemul binar numărul de cifre de 1 dublu faţă de numărul de
cifre de 0. Dacă nu există astfel de numere se va afişa mesajul “Nu exista”.
Exemplu:
atestat.in atestat.out
5 5 60 43
12 5 25 60 43
29. În fișierul numere.in se află pe prima linie maxim un milion de numere naturale de cel mult
2 cifre fiecare. Să se găsească un procedeu eficient de determinare a numărului care se repetă cel
mai des. Pe ecran se va afișa numărul determinat și numărul său de apariții.
Exemplu:
numere.in
23 7 8 19 11 12 23 5 7 23 89 23 8
se va afișa pe ecran:
numarul cerut este 23
numarul sau de aparitii 4

30. Se consideră un vector cu n numere întregi. Să se afişeze primul număr palindrom întâlnit,
apoi să se şteargă acest element din vector şi să se afişeze vectorul rezultat.
Exemplu: pentru n=5 și vectorul (12, 121, 75, 11, 4) se va afişa:
121
12 75 11 4