Subiecte ATESTAT-programare
Subiecte ATESTAT-programare
Subiecte programare
2. Fișierul „[Link]” conține pe prima linie un număr natural n de cel mult 9 cifre. Scrieți un
program C++ care citește din „[Link]” numărul n și care scrie în fișierul „[Link]”:
a) Pe prima linie, cifrele de rang par separate printr-un spațiu (rangul se numerotează de
la dreapta la stânga începând cu cifra unităților care va avea rangul 1)
b) Pe a doua linie numărul obținut din n după ce s-a făcut o permutare circulară spre
stânga a cifrelor sale.
Exemplu :
Daca fișierul „[Link]” conține:
32245673
atunci „[Link]” va avea următorul conținut:
7523
22456733
3. În fișierul "[Link]" pe prima linie este memorat un număr natural n iar pe următoarea linie
sunt memorate n numere naturale de maxim 9 cifre separate prin spațiu. Se cere:
a) Sa se afișeze pe prima linie a fișierului "[Link]" cel mai mic număr impar și poziția
primei apariții a acestuia. Dacă nu există astfel de numere să se afișeze mesajul "NU
EXISTA".
b) Sa se afișeze pe a 2 a linie a fișierului "[Link]" cel mai mare divizor comun al primelor
2 numere dintre cele n numere naturale din fișierul "[Link]".
Exemplu:
[Link] [Link]
4 33 2
24 33 234 100 3
4. Fișierul ,, [Link]” conține pe mai multe rânduri cel mult 50 de numere naturale, numerele
aflate pe același rând fiind separate prin câte un spațiu. Fiecare număr are cel mult 4 cifre.
Se cere:
a) Scrieți un program C/C++ care afișează pe câte o linie a fișierului ,,[Link]”, numărul si
divizorii acestuia.
b) Scrieți pe următoare linie a fișierului ,,[Link]”, numărul care are cei mai mulți divizori.
În cazul în care există mai multe valori în fișier care au număr maxim de divizori, programul
va afișa cea mai mică valoare dintre acestea.
Exemplu: dacă fișierul [Link] conține valorile
23 12 100 36
atunci se va afișa în [Link]
23
12 2 3 4 6
1
Atestat 2016. Subiecte programare
100 2 4 5 10 20 25 50
36 2 3 4 6 9 12 18
36
pentru că atât 100 cât și 36 au număr maxim de divizori, dar 36 este cel mai mic.
5. Fișierul text [Link] conține cel mult 1000 de numere naturale cu cel mult patru cifre
fiecare, despărțite prin câte un spațiu.
a) Afișați pe ecran primul număr prim din fișier. Dacă fișierul nu conține nici un astfel de
număr, atunci se va scrie mesajul NU EXISTA.
b) Afișați factorii primi împreună cu exponenții lor, din descompunerea în factori primi ai
primului număr din fișierul [Link]. Afișarea se va face in fișierul [Link],
fiecare factor si exponentul sau pe cate o linie in fișier, separați de câte un spațiu.
Exemplu: dacă fișierul [Link] are următorul conținut:
300 11 44 25 7 13
fișierul [Link] va avea următorul conținut:
22
31
52
pentru ca 300=22*31*52, iar pe ecran se va afișa 11.
6. În fișierul [Link] sunt memorate cel mult 1000 de numere naturale de cel mult 4 cifre
fiecare.
Scrieți un program care citește numerele din fișierul [Link] și rezolvă următoarele cerințe:
a) Scrie pe prima linie a fișierului [Link] cel mai mare număr palindrom din
fișierul [Link];
b) Scrie pe a doua linie a fișierului [Link], separate prin spațiu, primul și ultimul
număr palindrom din fișierul [Link];
Exemplu:
[Link] [Link]
10 101 23 44 676 43 88 201 202 124 147 90 676
101 147
7. Fișierul [Link] conține două linii. Pe prima linie este scris un număr natural nenul
n,(5<n<30). Pe cea de-a doua linie a fișierului sunt scrise n numere naturale separate prin câte
un spațiu, formate fiecare din cel mult 4 cifre, reprezentând un șir de n numere naturale nenule.
Cel puțin unul din cele n numere din șir este număr impar.
Să se scrie un program, în limbajul C/C++, care scrie în fișierul [Link]:
a. Pe prima linie, separate printr-un spațiu, numărul cifrelor numerelor impare din șir,
calculat prin intermediul unui subprogram;
b. pe următoarea linie a fișierului, cel mai mare divizor comun al elementului minim și cel
maxim din șir.
Exemplu:
[Link] [Link]
6 312
1232 243 98 3 242 27 3
8. Din fișierul [Link] se citește un număr natural n de exact 9 cifre. Numărul n citit se va
împărți apoi în 3 numere, de câte 3 cifre fiecare, spre exemplu: pentru 𝑛 = 123456789, cele 3
numere vor fi: 123, 456, 789.
a) Pe prima linie a fișierului [Link] se vor afișa cele 3 numere astfel formate, separate
prin câte un spațiu;
2
Atestat 2016. Subiecte programare
b) Pe a doua linie a fișierului [Link] se va afișa cel mai mare divizor comun a celor 3
numere.
Exemplu:
[Link] [Link]
153006018 153 6 18
3
9. Din fișierul „ [Link]” se citește un număr natural n cu maxim nouă cifre nenule si o cifra
para k. Să se scrie în fișierul „ [Link]” răspunsul la următoarele cerințe :
a) numărul care se obține prin eliminarea tuturor cifrelor cu valoarea k din x;
b) cel mai mare număr mai mic decât n care este o putere a lui k.
Exemplu:
Date de intrare: 1231 2
Date de ieșire: Pe prima linie a fișierului [Link] se va scrie 131
Pe a doua linie a fișierului [Link] se va scrie 1024
10. Fișierul text [Link] conține pe prima linie un număr natural n (0<n<1000), iar pe a doua
linie n numere naturale cu cel mult 9 cifre fiecare, despărțite prin câte un spațiu. Scrieți un
program C/C++ care citește toate numerele din fișierul [Link] și care:
a) Scrie pe prima linie în fișierul de ieșire [Link], separate prin câte un spațiu,
numerele palindrom de pe a doua linie a fișierului [Link];
b) Scrie pe a doua linie în fișierul [Link], în ordine crescătoare numerele
palindrom care au un număr impar de cifre de pe a doua linie a fișierului [Link].
Exemplu:
[Link] [Link]
10 53135 3113 373 239932 313 1441 2551552
53135 3113 61556 373 54 239932 313 122 313 373 53135 2551552
1441 2551552
11. Fișierul [Link] conține cel mult 1000 de linii, pe fiecare linie fiind scrise câte două
numere întregi nenule semnificând coordonatele unor puncte în plan.
Scrieți un program care citește coordonatele punctelor din fișierul [Link] și afișează pe
ecran, separate prin spațiu, două valori determinate astfel:
a) prima valoare reprezintă numărul de valori care se află în cadranul I;
b) a doua valoare reprezintă distanța maximă existentă între două puncte.
Exemplu:
[Link] ecran
11 2
10 1 11
-1 1
12. Fișierul [Link] conține pe prima linie un număr n cu cel mult 2 cifre iar pe următoarele
n linii câte două numere naturale nenule semnificând numărătorul și numitorul unei fracții.
Scrieți un program care citește datele din fișierul [Link] și afișează pe ecran, separate prin
spațiu, două valori determinate astfel:
a) prima valoare reprezintă numărul de fracții ireductibile scrise în fișierul [Link];
b) a doua valoare reprezintă cel mai mic numitor comun al tuturor fracțiilor.
Exemplu:
Dacă fișierul [Link] are următorul conținut:
4
23
46
24
3
Atestat 2016. Subiecte programare
11 6
atunci pe ecran se vor afișa valorile: 2 (sunt două fracții ireductibile) și 12 (cel mai mic numitor
comun al tuturor fracțiilor este 12)
13. Fișierul [Link] conține pe prima linie numărul natural nenul n (2<n<10). Pe fiecare
dintre următoarele n linii sunt scrise câte trei numere reale x , y și r, reprezentând coordonatele
carteziene ale centrului unui cerc din planul xOy și raza acestuia. Cele trei numere x, y și r sunt
separate prin câte un spațiu.
Să se scrie un program, în limbajul /C/C++, care scrie în fișierul [Link] :
a) coordonatele carteziene ale centrelor cercurilor din planul xOy şi raza acestora, sub
forma (x, y, r) (abscisă, ordonată, rază), câte unul pe linie, în ordinea crescătoare a
razelor;
b) numărul de cercuri care au centrul situat pe prima bisectoare. Un punct se află situat pe
prima bisectoare atunci când abscisa și ordonata acestuia sunt egale;
Exemplu:
[Link] [Link]
5 a) (1,3,1)
131 (3,3,2)
447 (6,2,3)
255 (2,5,5)
332 (4,4,7)
623 b) 2
14. La un magazin sunt cel mult n produse fiecare produs fiind identificat prin cod, denumire
preț și cantitate, În fișierul [Link]” pe prima linie se afla n numărul de produse iar pe
următoarele n linii datele pentru fiecare produs( cod, preț cantitate și denumire). Să se realizeze
un program C++ care să afișeze în fișierul de ieșire “ [Link]”
a) pe prima linie, lista denumirii produselor cu cantitatea mai mare de 10 separate prin
virgulă, sau mesajul NU EXISTA
b) pe următoarele linii se va scrie lista descrescătoare după preț și la final pe o linie
nouă valoarea totală a stocului de marfă.
Exemplu:
[Link] [Link]
3 unt, paste
11 unt 3 20 6 paste 4 11
2 apa 2 5 11 unt 3 20
6 paste 4 11 2 apa 2 5
114
15. Într-o clasă sunt maxim 30 elevi, fiecare elev fiind identificat prin nume si prenume. Elevul
poate primi pe semestru la o disciplina maxim 5 note și o notă la teză. Daca are mai puțin de
5 note, notelor lipsă li se va atribui valoarea 0. Datele sunt citite din fișierul de intrare [Link]
astfel: pe prima linie numărul de elevi iar pe următoarele n linii atributele pentru fiecare elev
( numele, prenumele și notele). Să se realizeze un program C++ care să afișeze în fișierul de
ieșire [Link] mediile elevilor din clasă la acea disciplina în ordinea:
a) descrescătoare a mediilor
b) alfabetică a numelui și prenumelui.
16. Fișierul text [Link] conține pe prima linie un număr natural n (0<n<1000), iar pe a doua
linie n numere naturale cu cel mult 9 cifre fiecare, despărțite prin câte un spațiu. Scrieți un
program C/C++ care citește toate numerele din fișierul [Link] și care:
4
Atestat 2016. Subiecte programare
a) afișează pe prima linie în fișierul [Link] suma cifrelor fiecărui număr din
fișierul de intrare
b) afișează pe a doua linie în fișierul [Link] numerele care au suma cifrelor
maximă
Exemplu:
[Link] [Link]
3 10 5 10
82 500 1234 82 1234
17. Fișierul „[Link]” conține 2 linii. Pe prima linie este scris un număr natural n nenul
(n<=50) iar pe a doua linie sunt scrise n numere naturale nenule de cel mult 9 cifre separate
prin câte un spațiu. Scrieți un program C++ care citește din „[Link]” numărul n și apoi cele
n numere și care scrie în fișierul „[Link]”:
a) Pe prima linie media aritmetică a numerelor de pe poziții impare din șir;
b) Pe a doua linie, în ordine crescătoare elementele distincte ale șirului dat;
Exemplu :
Daca fișierul „[Link]” conține:
5
4 2 2 2 6
atunci „[Link]” va avea următorul conținut:
3
2 46
18. Fișierul text [Link] conține pe prima linie un număr natural n (0<n<1000), iar pe a doua
linie n numere naturale cu cel mult 9 cifre fiecare, despărțite prin câte un spațiu. Scrieți un
program C/C++ care citește toate numerele din fișierul [Link], construiește un vector cu
aceste numere, și care:
a) Scrie pe prima linie în fișierul de ieșire [Link], mesajul DA dacă numerele
din vector sunt prime între ele două câte două și mesajul NU în caz contrar;
b) În cazul în care numerele din vector nu sunt prime între ele două câte două, eliminați
din vector numere astfel încât elementele rămase să fie prime între ele două câte două.
Vectorul obținut se va scrie pe a doua linie a fișierului de ieșire [Link]. În cazul
în care vectorul reprezenta o mulțime se va scrie nemodificat.
Exemplu:
[Link] [Link]
7 NU
5 131 56 14 55 456 513 5 131 14 55 456
19. Fișierul [Link] conține două linii. Pe prima linie este scris un număr natural nenul n,
(5<n<30). Pe cea de–a doua linie a fișierului sunt scrise n numere naturale separate prin câte
un spațiu, formate fiecare din cel mult 4 cifre, reprezentând un șir de n numere naturale. Șirul
conține cel puțin două numere impare.
Să se scrie un program care:
a) să afișeze pe ecran, în linie, în ordinea inversă citirii, toate numerele din șir, separate
prin câte un spațiu;
b) să afișeze pe ecran, în linie, numărul de cifre din care este format fiecare număr din șirul
inițial, separate prin câte un spațiu.
Exemplu:
Dacă fișierul [Link] conține:
6
5
Atestat 2016. Subiecte programare
20. Numim prefix al unui număr natural x orice cât nenul obținut prin împărțirea întreagă a lui
x la o putere a lui 10.
Fișierul [Link] conține pe o singură linie un șir de cel mult 100 de numere naturale cu
maxim 9 cifre, separate prin câte un singur spațiu.
Scrieți un program care citește valorile din fișierul [Link] și scrie în fișierul [Link]:
a) pe prima linie o valoare ce reprezintă numărul de valori care au un prefix divizibil cu
10;
b) pe a doua linie două valori semnificând prima pereche de numere consecutive, citite
din fișierul [Link], cu proprietatea că primul număr citit are un prefix egal cu al
doilea număr.
Exemplu: Prefixele numărului 12546 sunt 12546, 1254, 125, 12, 1.
Dacă fișierul [Link] conține pe prima linie valorile:
103 234 567 613 61 100 345 2103 21
Atunci fișierul [Link] va avea următorul conținut:
3
613 61
deoarece sunt trei numere care au un prefix divizibil cu 10 și anume 103, 100 și 2103 iar 613
61 este prima pereche de numere citite consecutiv din fișier care are proprietatea cerută.
21. In fișierul ,,[Link]”, pe prima linie, este memorat un număr natural n, iar pe linia următoare
n numere naturale de cel puțin 3 cifre şi cel mult 9 cifre, cu toate cifrele nenule.
Se cere:
a) Scrieți un program C/C++ care afișează pe prima linie a fișierului ,,[Link]”, valorile
obținute prin eliminarea primei cifre din fiecare dintre cele n numere citite.
b) Scrieți pe a doua linie a fișierului ,,[Link]” cel mai mare număr obținut din prima cifră
distinctă a fiecărui număr din cele n citite.
Exemplu: dacă se citesc pentru n valoarea 4 și de pe rândul următor valorile
234 1567 278 5673
Se obține în fișierul ,,[Link]”:
34 567 78 673
521
22. Fișierul text [Link] conține pe prima linie două numere naturale, n (0<n<100) și k
(0<k<15), și pe următorul rând n numere naturale, numerele de pe același rând fiind
separate prin câte un spațiu.
a) Verificați dacă cifrele primului număr scris pe a doua linie în fișierul [Link] au
aceeași paritate (toate pare sau toate impare), și afișați pe ecran un mesaj corespunzător
(DA sau NU).
b) Scrieți un program care afișează în fișierul de ieșire [Link], în ordine
crescătoare, separate de cate un spațiu, acele numere din fișierul [Link] care au
cel puțin k divizori proprii. Dacă un număr care corespunde cerinței apare de mai multe
ori, se va afișa o singură dată.
Exemplu: dacă fișierul [Link] are următorul conținut:
49
15 36 24 33 36 1 12 1 2
fișierul [Link] va conține :
12 24 36
Pe ecran se va afișa DA (deoarece 1 și 5 sunt de aceeași paritate).
6
Atestat 2016. Subiecte programare
23. Fișierul [Link] conține două linii. Pe prima linie este scris un număr natural nenul
n(5<n<30). Pe cea de-a doua linie a fișierului sunt scrise n numere naturale separate prin câte
un spațiu, formate fiecare din cel mult 4 cifre și cel puțin 2 cifre, reprezentând un șir de n
numere naturale. Cel puțin unul din cele n numere din șir este număr par.
Să se scrie un program, care preia valorile din fișierul [Link] și scrie în fișierul
[Link]:
a) pe prima linie, separate printr-un spațiu, toate numerele pare din şir în ordinea
descrescătoare a valorii lor;
b) pe a doua linie, separate prin câte un spațiu, toate numerele supraperfecte din șirul citit
din fișier. Un număr natural se numește supraperfect dacă suma divizorilor săi,
exceptând numărul însuși, este mai mare decât numărul dat, de exemplu:
18<1+2+3+6+9. Dacă nu există astfel de numere, se va scrie pe a doua linie a fișierului
mesajul “NU EXISTA NUMERE SUPRAPERFECTE”.
Exemplu:
[Link] Date de ieșire
6 Fişierul [Link] conține:
6138 12 496 2523 18 1243 6138 496 18 12
6138 12 18
24. Fișierul text [Link] conține pe prima linie un număr natural n (0<n<1000), iar pe a doua
linie n numere naturale cu cel mult 9 cifre fiecare, despărțite prin câte un spațiu.
Scrieți un program care citește numerele din fișierul [Link] și rezolvă următoarele
cerințe:
a) Verifică dacă numerele de pe a doua linie sunt în ordine crescătoare și scrie pe prima
linie a fișierului [Link] unul din mesajele Da sau Nu.
b) Scrie pe a doua linie a fișierului [Link] cel mai mare număr care se poate forma
cu prima cifră a fiecărui număr de pe a doua linie a fișierului [Link];
Exemplu:
[Link] [Link]
12 Nu
10 301 23 44 676 43 88 201 702 124 147 90 986744322111
25. De pe prima linie a fișierului [Link] se citește un număr natural nenul n de maxim 18 cifre.
a) Pe prima linie a fișierului [Link] se va afișa suma cifrelor și cifra maximă, separate
prin spațiu;
b) Pe a doua linie a fișierului [Link] se vor afișa frecvențele cifrelor numărului n în
ordine crescătoare a cifrelor, separate prin câte un spațiu.
Exemplu:
[Link] [Link]
32490396303754 58 9
2 0 1 4 2 1 1 1 0 2
26. Fișierul text [Link] conține, cel mult un milion de numere naturale nenule cu cel mult
9 cifre fiecare. Scrieți programul C++ care:
a) Scrie pe prima linie în fișierul de ieșire [Link], cel mai mare număr care este
termen al șirului lui Fibonacci. Dacă nu există astfel de numere se va scrie mesajul "NU
EXISTA";
b) Scrie pe a doua linie în fișierul de ieșire [Link], în ordine crescătoare, toate
numerele din fișierului de intrare, care sunt termeni ai șirului lui Fibonacci.
Exemplu:
7
Atestat 2016. Subiecte programare
[Link] [Link]
3 434 21 4 144 2 3 56 34 200 5 144
2 3 3 5 21 34 144
27. Fișierul [Link] conține trei linii. Pe prima linie este scris un număr natural nenul n, (5<n).
Pe cea de-a doua linie a fișierului sunt scrise n numere naturale, separate prin câte un spațiu,
formate fiecare din cel mult 9 cifre și cel puțin 2 cifre, reprezentând un șir de n numere naturale.
Primul număr din șir se găsește pe poziția 1, iar ultimul număr din șir se găsește pe poziția n.
Cel puțin unul din cele n numere din șir are cifra zecilor impară. Pe ultima linie este scris un
număr natural k, 1≤k<n. Să se scrie în fișierul [Link]:
a) Pe prima linie, separate printr-un spațiu, toate numerele din șir, care au cifra zecilor
impară;
b) separate prin câte un spațiu elementele din șir după interschimbarea elementului de pe
poziția k, cu elementul de pe poziția k+1.
Exemplu:
Date de intrare 6
6138 12 496 2523 18 1243
3
Date de ieșire: 6138 12 496 18
6138 12 2523 496 18 1243
28. Se citește din fișierul „ [Link]” de pe prima linie un număr natural n iar pe a doua linie n
numere naturale. Se cere să se afișeze în fișierul de ieșire „ [Link]” :
a) Valorile cu suma cifrelor un număr par în ordine descrescătoare;
b) Numerele prime din a doua linie din fișier în ordine crescătoare sau mesajul NU
EXISTA
Exemplu :
Date de intrare: 5
417 2152 26 664 7
Date de iesire: Pe prima linie a fișierului: 2152 664 417 7
Pe a doua linie a fișierului: 7
29. Se citesc din fișierul „ [Link]” următoarele date: pe prima linie un număr natural n
(dimensiunea vectorului ) iar pe a doua linie n numere naturale (elementele vectorului). Se
cere să se afișeze în fișierul de ieșire „ [Link]” :
a) Elementele în ordine descrescătoare a primei cifre;
b) Elementele în ordine crescătoare după numărul de apariții a cifrei 1 în reprezentarea
în baza 2 a numerelor. În cazul în care doua numere au același număr de cifre egale
cu 1 în reprezentarea lor binara atunci ele vor apărea ordonate descrescător.
Exemplu :
Date de intrare: 5 4 3 15 16 8
Date de ieșire: Pe prima linie a fișierului: 16 15 8 5 4 3
Pe a doua linie a fișierului: 16 8 4 5 3 15
30. Din fișierul text [Link] se citesc: un număr natural n reprezentând numărul de
componente ale unui vector cu numere naturale nenule cu cel mult 9 cifre fiecare și cele n
componente ale vectorului (n<100).
a) Afișați elementele vectorului pe primul rând al fișierului text [Link], ordonate
crescător.
b) Determinați cel mai mare și cel mai mic element din cele n citite care au ultima cifră
pară. Acestea se vor afișa, separate printr-un spațiu, pe a doua linie a fișierului
8
Atestat 2016. Subiecte programare
[Link]. Dacă nu există niciun element care să aibă ultima cifră pară, se va afișa
în fișier mesajul Nu există!.
Exemplu:
[Link] [Link]
5 2 25 42 122 313
25 2 42 313 122 122 2
31. Pe prima linie a fișierului „[Link]” se află un număr natural n, iar pe următoarele n linii
câte n numere naturale de maxim 2 cifre separate prin spații reprezentând elementele unui
tablou bidimensional. Scrieți un program C++ care citește din „[Link]” numărul n și apoi
elementele tabloului și care scrie în fișierul „[Link]”:
a) scrie pe prima linie numărul de numere prime situate sub diagonala secundară; dacă
nu este niciun număr prim se va scrie „nu există”. (un număr natural n>=2 se
numește prim dacă nu are alți divizori decât 1 și el însuși)
b) scrie pe a doua linie, separate de câte un spațiu, elementele distincte ale tabloului,
în ordine crescătoare.
Exemplu :
Daca fișierul „[Link]” conține:
4
6 4 4 1
2 6 8 1
0 4 2 2
8 6 7 4
atunci „[Link]” va avea următorul conținut:
3
0 1 2 4 6 7 8
4 0 2 0 0
0 0 0 8 0
Pe ecran se va afișa DA (deoarece suma este 1+5+1+3+4+4+2+8=28 care este un număr
perfect)
33. Fișierul [Link] conține pe prima linie un număr natural n (2<n<20), care reprezintă
numărul de linii, respectiv numărul de coloane ale unei matrice. Pe fiecare din următoarele n
linii, sunt scrise câte n numere întregi, formate din cel mult 4 cifre, separate prin câte un spațiu,
reprezentând valorile elementelor matricei.
Să se scrie un program, care preia valorile din fișierul [Link] și scrie în fișierul
[Link]:
a) pe prima linie, separate printr-un spațiu, numărul de elemente prime de pe fiecare
coloană a matricei;
b) pe a doua linie, mesajul „DA” dacă suma elementelor din zona „EST” a matricei este
un număr palindrom sau mesajul „NU” în caz contrar.
Liniile și coloanele matricei vor fi numerotate începând cu 1.
Exemplu:
[Link] [Link]
3 102
714 DA
462
9 22 193
34. Fișierul text [Link] conține pe prima linie un număr natural n (0<n<20), iar pe
următoarele n linii câte n numere întregi de cel mult patru cifre, separate prin spațiu,
reprezentând elementele unei matrice cu n linii și n coloane.
Scrieți un program care citește datele din fișierul [Link] și rezolvă următoarele cerințe:
a) Scrie pe prima linie a fișierului [Link] cel mai mare număr situat pe diagonala
secundară a matricei;
b) Ordonează crescător elementele de pe diagonala principală a matricei și scrie matricea
rezultată începând cu a doua linie a fișierului [Link];
Exemplu:
[Link] [Link]
4 76
10 20 30 40 10 20 30 40
51 82 42 56 51 75 42 56
45 76 90 18 45 76 82 18
32 11 43 75 32 11 43 90
35. Fișierul text [Link] conține pe prima linie două numere naturale n și m (0<n<20,
0<m<20), iar pe următoarele n linii câte m numere întregi distincte de cel mult patru cifre,
separate prin spațiu, reprezentând elementele unei matrice cu n linii și m coloane.
Scrieți un program care citește datele din fișierul [Link] și rezolvă următoarele cerințe:
a) Inversează elementul maxim cu elementul minim din matrice și scrie matricea rezultată
în fișierul [Link], începând cu prima linie;
b) Elimină din matrice, la nivelul memoriei, linia și coloana pe care se găsește elementul
minim și scrie matricea obținută în fișierul [Link], în continuarea matricei de la
punctul a) după o linie liberă.
Exemplu:
[Link] [Link]
10
Atestat 2016. Subiecte programare
43 10 20 30 40
10 20 30 40 51 82 42 90
51 82 42 5 45 76 5 18
45 76 90 18
10 20 30
45 76 90
36. Fișierul [Link] conține pe prima linie numărul natural nenul n (2<n<20), care reprezintă
numărul de linii, respectiv numărul de coloane ale unei matrice A. Pe fiecare din următoarele n
linii, sunt scrise câte n numere întregi, formate din cel mult 4 cifre, separate prin spații,
reprezentând valorile elementelor matricei A.
Să se scrie un program, în limbajul C/C++, care scrie în fișierul [Link]:
a) pe prima linie, numărul elementelor numere perfecte din matricea A; Un număr întreg
a se numește perfect dacă este egal cu suma divizorilor mai mici decât el, de exemplu
6=1+2+3. Dacă nu există numere perfecte se va scrie mesajul “Nu exista numere
perfecte”.
b) Scrie pe următoarea linie în fișierul [Link], numărul obținut prin adunarea ultimei
cifre a fiecărui număr din prima coloana a matricei A.
Exemplu:
[Link] [Link]
34 a) 35 23 9 6
9 4 2 35 b) 26
57 -58 23 34
34 9 -5 69
6 26 33 28
37. Se citesc din fișierul „ [Link]” de pe prima linie doua numere naturale n și m iar pe linia
următoarea valorile n x m numere naturale de maxim patru cifre reprezentând elementele unei
matrice. Se cere sa se afișeze în fișierul de ieșire [Link]” :
a) Numărul de ordine al primei linii din matrice ce conține o valoare ce este palindrom
sau mesajul NU EXISTA;
b) Să se afișeze numărul de valori prime de pe contur.
Exemplu:
Date de intrare: 3 3
12 234 71
131 32 5
12 17 33
Date de ieșire: Pe prima linie a fișierului: 1
Pe a doua linie a fișierului: 4
38. Se citesc din fișierul „ [Link]” următoarele date: pe prima linie 2 numere naturale n
și m (dimensiunile matricei ) iar pe următoarele linii valori binare reprezentând câte un număr
natural reprezentat în baza 2. Se cere sa se afișeze în fișierul de ieșire „ [Link]” :
a) Numărul de ordine ai primei liniei cu număr maxim de valori 1;
b) Să se afișeze numerele în baza 10, fiecare pe cate un rând.
Exemplu:
Date de intrare: 34
1010
1101
0110
Date de ieșire: Pe prima linie a fișierului: 2
Pe a doua linie a fișierului: 10 13 6
11
Atestat 2016. Subiecte programare
39. Se citește din fișierul text [Link] numărul n și un tablou bidimensional a cu n x n (n <50)
elemente numere naturale de cel mult 9 cifre. Să se realizeze un program care afișează în fișierul
text [Link]:
a) Liniile cu cele mai multe elemente prime sau mesajul NU EXISTA.
b) Pe a doua linie se vor afișa elementele de pe chenarul tabloului în ordine descrescătoare.
Exemplu:
[Link] [Link]
3 3
9 4 2 975432 21
1 2 3
7 5 2
40. Din fișierul text [Link] se citesc: un număr natural n reprezentând numărul de linii,
respectiv coloane ale unei matrice pătratice cu numere întregi și cele n x n componente ale
matricei (n<100). În fișierul [Link] răspundeți la două cerințe
a) afișați in ordine crescătoare elementele matricei situate sub diagonala secundara.
b) să se rearanjeze componentele matricei astfel încât să se obțină transpusa matricei date.
41. Fișierul „[Link]” conține pe prima linie un text de maxim 100 de caractere format din
litere, cifre și spații. Cuvintele sunt separate prin câte un spațiu. Primul caracter este o literă.
Scrieți un program C++ care citește din „[Link]” șirul de caractere și care scrie în fișierul
„[Link]”:
a) Pe prima linie șirul din care s-au eliminat toate caracterele cifră;
b) Pe a doua linie a fișierului se vor scrie acele cuvinte care încep cu o vocală separate
prin câte un spațiu. Dacă nu există astfel de cuvinte se va scrie „nu sunt”.
Exemplu :
Daca fișierul „[Link]” conține:
Gigel are 2 mere si 3 alune
atunci „[Link]” va avea următorul conținut:
Gigel are mere si alune
Are alune
42. Fișierul [Link] conține o singură linie pe care se află scris un text format din cel mult
200 de caractere, primul caracter fiind literă, iar cuvintele din text sunt separate prin câte un
spațiu. Fiecare cuvânt este format doar din litere mari sau mici ale alfabetului limbii engleze.
Să se scrie un program care:
a) să afișeze textul pe o singură linie a ecranului, scris cu majuscule;
b) să afișeze în fișierul [Link] numărul consoanelor din text.
Exemplu:
[Link]
Imi place Informatica
Ecran
IMI PLACE INFORMATICA
[Link]
10
43. Fișierul ,,[Link]” conține pe prima linie un text alcătuit din cel mult 250 de caractere, în care
cuvintele sunt formate doar din litere mici ale alfabetului englez şi sunt separate prin spațiu.
12
Atestat 2016. Subiecte programare
Se cere:
a) Scrieți un program C/C++ care citește din fișierul ,,[Link]” textul, elimină perechile de
câte două litere identice, ce apar în șir și le afișează pe câte o linie a fișierului ,,[Link]”.
b) Scrieți pe linia următoare șirul obținut după eliminarea tuturor secvențelor formate din
câte două litere identice.
Exemplu: dacă textul citit din fișier este: aaateeestat inffforrrmatica
se afişează în fișierul [Link]
aa
ee
ff
rr
atestat informatica
44. Fișierul [Link] conține o singură linie pe care se află scris un text format din cel mult
70 de caractere, primul caracter fiind literă, iar cuvintele din text sunt separate prin câte un
spațiu. Fiecare cuvânt este format doar din litere mari sau mici ale alfabetului limbii engleze.
Să se scrie un program, care preia valorile din fișierul [Link] și:
a) afișează pe ecran: numărul de apariții a primului caracter din text și apoi textul
transformat astfel: litere mari în litere mici și litere mici în litere mari;
b) modifică fiecare cuvânt care începe și se termină cu o aceeași vocală prin eliminarea
acestei vocale de la începutul şi sfârșitul cuvântului. Cuvintele astfel modificate se vor
scrie în fișierul [Link], pe câte un rând. Dacă nu există cuvinte care încep și se
termină cu o aceeași vocală se va scrie pe prima linie a fișierului mesajul „NU
EXISTA”.
Exemplu:
[Link] Date de ieșire
Ana ateStaT colaC elevele feReaStra 6 aNA ATEsTAt COLAc ELEVELE FErEAsTRA
Fișierul [Link] conține:
n
level
45. Fișierul text [Link] conține pe prima linie un număr natural n (0<n<100), iar pe
următoarea linie n cuvinte separate prin spațiu și alcătuite doar din litere mici ale alfabetului
englez.
Scrieți un program care citește datele din fișierul [Link] și rezolvă următoarele cerințe:
a) Scrie pe prima linie a fișierului [Link] cuvântul din fișierul [Link] care conține
cele mai multe vocale. În situația în care există mai multe cuvinte se va scrie primul
dintre acestea.
b) Scrie pe a doua linie a fișierului [Link], în ordine alfabetică, literele distincte care
apar în fișierul [Link].
Exemplu:
[Link] [Link]
5 bacalaureat
examenul de bacalaureat la informatica abcefilmnotux
46. Fişierul text [Link] conține pe prima linie un text cu maxim 255 de caractere în care
cuvintele sunt formate din litere mici si mari ale alfabetului englez și sunt separate prin spatii.
Scrieți un program C/C++ care citește textul din fișierul [Link], și care :
13
Atestat 2016. Subiecte programare
a) Scrie pe prima linie în fișierul de ieșire [Link], numărul de cuvinte din text care
încep cu litera mare;
b) Scrie pe a doua linie în fișierul de ieșire [Link], separate prin câte un spațiu,
cuvintele de lungime maximă.
Exemplu:
[Link] [Link]
Ana si Ion merg in excursie la Brasov 3
excursie
47. Din fișierul [Link] se citește un șir de caractere (maxim 255 litere mici ale alfabetului
englez).
a) Pe prima linie a fișierului [Link] se va afișa numărul de caractere diferite de spațiu și
numărul de spatii din cadrul șirului citit separate printr-un spațiu.
b) Pe următoarele linii ale fișierului [Link] se vor afișa cuvintele din șirul de caractere
ordonate crescător (cuvintele nu vor conține mai mult de 20 de caractere).
Exemplu:
Dacă fișierul [Link] conține șirul de caractere el e bun în fișierul [Link] se va afișa:
63
bun
e
el
48. Fișierul text [Link] conține pe prima linie un număr natural n şi pe următoarele n linii,
n cuvinte cu maxim 25 de litere mici ale alfabetului englez, fiecare cuvânt fiind scris pe câte o
linie. Scrieți un program C/C++ care citește cuvintele din fișierul [Link], și care :
c) Scrie pe prima linie în fișierul de ieșire [Link], numărul de cuvinte cu aspect de
palindrom;
d) Scrie pe a doua linie în fișierul de ieșire [Link], în ordine lexicografică, separate
prin câte un spațiu, cuvintele cu aspect de palindrom.
Exemplu:
[Link] [Link]
7 4
mare capac
carte cojoc
cojoc potop
rotor rotor
potop
tare
capac
49. Se citește din fișierul de intrare “ [Link]” un cuvânt de maxim 100 de caractere. Sa se scrie
un program C++ care sa afișeze în fișierul de ieșire “ [Link]”.
a) Prima vocala si numărul ei de apariții.
b) Frecventele de apariții ale consoanelor
Exemplu:
Date de intrare: informatica
Date de ieșire: i 2
n1f1r1m1t1c1
14
Atestat 2016. Subiecte programare
50. Se citește din fișierul de intrare “ [Link]” un șir s având maximum 32 de caractere, ce
conține numai litere mici ale alfabetului englez și cifre. Primul caracter al șirului este o literă
mică, ultimul caracter al șirului este o cifră și fiecare literă mică din șir este urmată de o cifră
nenulă. Să se scrie un program C++ care sa afișeze în fișierul de ieșire “ [Link]”.
a) numărul de cifre si numărul de litere din sir separate prin spațiu
b) sa se construiască un nou șir după următoarea regulă: fiecare literă mică se va repeta
de atâtea ori de câte ori o indică cifra situată pe poziția imediat următoare în șirul inițial.
Exemplu:
Date de intrare: g4b1f3:
Date de iesire: 3 3
Ggggbfff
51. Fișierul [Link] conține pe prima linie numărul natural nenul n (5<n<10). Pe o tablă de
șah două regine se atacă dacă se afla pe aceeași linie, aceeași coloană sau aceeași diagonală.
Să se scrie un program, în limbajul /C/C++, care scrie în fișierul [Link] :
a) Toate modalitățile de a aranja n regine pe o tabla de șah cu n linii și n coloane și
câte astfel de modalități exista. Afișarea pentru o modalitate de aranjare va fi sub
forma:
i. pe prima linie mesajul „Soluția numărul x :”;
ii. pe următoarele n linii, litera D pentru poziția reginei și caracterul ”@” pentru
pozițiile libere.
b) Definiți un subprogram care scrie pe ultima linie din fișierul [Link], în câte din
soluțiile de la punctul a) reginele de pe liniile pare stau pe poziții impare. Dacă în
nici o soluție nu este îndeplinită aceasta condiție scrieți mesajul „Nu exista”.
Exemplu:
[Link] [Link] :
8 a) 135
Solutia nr 1:
@D@@@@@@
@@@@D@@@
@@@@@@D@
@@@D@@@@
D@@@@@@@
@@@@@@@D
@@@@@@D@
@@D@@@@@
Solutia nr 2 :
….
b) 2
52. O clasă formată din 30 de elevi dorește să trimită la consfătuirea reprezentanților claselor
școlii o delegație formată din 3 elevi. Realizați un program C++ care citește din fișierul “
[Link]” numărul de elevi ai clasei și numărul de elevi din delegație și afișează în fișierul
“[Link]”
a) numărul de posibilități de formare a delegațiilor
b) generarea și afișarea tuturor posibilităților de formare a delegațiilor de elevi.
15
Atestat 2016. Subiecte programare
53. Se citesc de la tastatură valorile n, a, b numere naturale. Scrieți un program care afișează
pe ecran toate permutările mulțimii {1,2,…,n} care au proprietatea că a şi b sunt consecutive.
Afișați și numărul permutărilor de acest tip.
Exemplu: pentru n=3, a=1 și b=2 se va afișa 123, 312
16