Sunteți pe pagina 1din 9

Probleme pentru ATESTAT - programare

2013

Probleme propuse pentru examenul de ATESTAT la INFORMATIC
Seciunea PROGRAMARE

1. Din fiierul text vector.in se citesc: un numr natural n reprezentnd numrul de
componente ale unui vector cu numere naturale i cele n componente ale vectorului
(n<50000). Fiecare component va fi un numr natural cu cel puin dou cifre!
a) Afiai elementele vectorului pe primul rnd al fiierului text vector.out, separate prin
cte un spaiu.
b) Sortai cresctor vectorul, dup ultimele dou cifre ale fiecruia din cele n numere ce
reprezint componentele vectorului, apoi afiai, pe al doilea rnd al fiierului vector.out
componentele vectorului sortat, separate prin cte un spaiu.
Exemplu: Dac fiierul vector.in are forma:
5
122 13 1445 9000 321
atunci fiierul vector.out va conine:
122 13 1445 9000 321
9000 13 321 122 1445

2. Din fiierul text vector.in se citesc: un numr natural n (n<10000) reprezentnd numrul
de componente ale unui vector cu numere naturale i cele n componente ale vectorului.
a) Afiai componentele vectorului, pe primul rnd al fiierului text vector.out, n ordine
invers citirii lor .
b) Pe al doilea rnd al fiierului text vector.outafiai media aritmetic a componentelor
vectorului, care sunt divizibile cu 3. Exist cel puin un numr multiplu de 3.
Exemplu: Dac fiierul vector.inare forma:
5
12 6 48 28 33
atunci fiierul vector.out va conine:
33 28 48 6 12
24.75

3. Din fiierul text vector.in se citesc: un numr natural n (n<2000) i n perechi de numere a,
b sunt dou numere ntregi ce reprezint capetele unor intervale nchise la ambele capete,
de forma [a,b] (a<b).
Pe primul rnd al fiierului text vector.out, afiai suma obinut prin adunarea tuturor numerelor
ntregi aflate n intervalul obinut prin intersectarea celor n intervale date. Dac intersecia este
mulimea vid, atunci se va afia mesajul Niciun element!.
Exemplu: Dac fiierul vector.inare forma:
3
-3 2
-2 10
-2 7
atunci fiierul vector.out va conine:
0
Explicaie: Intervalul obinut prin intersectarea celor n intervale este [-2,2].
Probleme pentru ATESTAT - programare
2013

4. Este sfritul colii. Dirigintele clasei dorete s premieze elevii cei mai buni. Pentru aceasta
are nevoie de o ierarhizare a acestora, n ordinea descresctoare a mediilor. tiind c, pentru
fiecare din cei n elevi ai clasei se cunosc numele i media general, ajutai-l pe diriginte s
fac premierea.
Datele se citesc din fiierul vector.in astfel:
- Pe prima linie se afl numrul n de elevi;
- Pe urmtoarele n linii se afl numele elevului i media, separate prin cte un spaiu.

n fiierul de ieire vector.out se vor afia pe n linii, separate prin cte un spaiu, numele elevului
i media, n ordinea descresctoare a mediilor.
Exemplu: Dac fiierul vector.in are forma:
3
Popoviciu 7.86
Ionovici 9.47
Arhivescu 8. 88
atunci fiierul vector.out va conine:
Ionovici 9.47
Arhivescu 8.88
Popoviciu 7.86

5. Din fiierul vector.in se citesc: n un numr natural nenul reprezentnd numrul de
componente ale unui vector cu numere naturale nenule i cele n componente ale
vectorului.
a) Afiai, pe primul rnd al fiierului vector.out mesajul Exista sau Nu exista, dac
printre componentele vectorului exist vreun numr perfect. Un numr este perfect
dac este egal cu suma divizorilor si.
b) n cazul n care, exist cel puin un numr perfect, afiai, pe al doilea rnd al
fiierului vector.out suma tuturor numerelor perfecte din irul dat. Dac nu exist
niciun numr cu proprietatea cerut, pe al doilea rnd al fiierului de ieire se va afia
-1.
Exemplu: Dac fiierul vector.in are forma:
6
13 33 6 28 6 16
atunci fiierul vector.out va conine:
Exista
40
Explicaie: Numrul 6 este perfect deoarece 6=1+2+3

6. Din fiierul text date.in se citesc numere ntregi. S se determine cel mai mare divizor
propriu al fiecrui numr citit. Afiarea va fi fcut n fiierul date.out.
Exemplu :
date.in
6 8 15 21

date.out
Divizorul maxim al elementului 6 este 3
Divizorul maxim al elementului 8 este 4
Divizorul maxim al elementului 15 este 5
Divizorul maxim al elementului 21 este 7
Probleme pentru ATESTAT - programare
2013

7. Din fisierul date.in se citesc de pe prima linie un numr natural n, iar de pe urmtoarele n
linii o matrice patratic de dimensiune nxn. S se afieze suma elementelor de pe fiecare
linie. Rezultatul va fi afiat n fisierul date.out sub forma:
linie 1 - >suma_1
linie 2 - >suma_2
.........
linie n ->suma_n
Exemplu :
date.in
4
2 5 3 6
3 5 8 4
1 2 6 3
8 3 5 9
date.out
linie 1 - > 16
linie 2 - > 20
linie 3 - > 12
linie 4 - > 25


8. Fie sirului Fibonacci dat prin recurena
F
0
=0, F
1
=1,,F
n
=F
n-1
+ F
n-2.
S se calculeze recursiv al n-lea termen Fibonacci.
Exemplu: pentru n=5 se va afia 5, iar pentru n=8 se va afia 21.

9. Din fiierul contur.in se citete n, numr natural (2<=n<=20) i o matrice ptratic de
dimensiune nxn. Realizai un program care afieaz n fiierul contur.out :
a) conturul matricei
b) cte elemente prime se afl pe conturul matricei
Exemplu: Pentru n=3 i matricea:
1 2 3
4 5 6
7 8 9
Se va afia:
1 2 3 6 9 8 7 4
3

10. Realizai un program care determin cel mai mare divizor comun al elementelor situate pe
fiecare coloan a unei matrici ptratice.
Exemplu: pentru n=3 i matricea
4 12 36
3 15 90
7 6 30
se va afia 4 , 3 , 1.
11. Se citete un ir de n (numr natural 1<n<=10) numere naturale. Se formeaz un numr cu
ultima cifr a fiecrui numr din ir. S se scrie un program care afieaz pe ecran dac
numrul astfel obinut este palindrom (adic dac citit de la stnga la dreapta este egal cu cel
citit de la dreapta la stnga).
Exemplu: Pentru n=6 i numerele 11 22 43 151 17 3, se va afia mesajul nu este palindrom.
Probleme pentru ATESTAT - programare
2013

12. S se citeasc din fiiereul text date.in un ir de maximum 255 de caractere format din
cuvinte separate prin unul sau mai multe spaii. Cuvintele sunt formate numai din litere mici
ale alfabetului englez. Scriei un program C/C++ care citete un astfel de ir i afieaz pe
ecran frecvena de apariie a fiecreu litere din ir.
Exemplu:
Pentru irul: competente profesionale
Se va afia:
a apare de 1 ori
c apare de 1 ori
e apare de 5 ori
f apare de 1 ori
i apare de 1 ori
l apare de 1 ori
m apare de 1 ori
n apare de 2 ori
o apare de 3 ori
p apare de 2 ori
r apare de 1 ori
s apare de 1 ori
t apare de 2 ori

13. S se citeasc de la tastatur dou iruri formate din maximum 25 de caractere fiecare
Fiecare ir conine numai litere mici ale alfabetului englez. Scriei un program C/C++ care
verific i afieaz printr-un mesaj sugestiv, dac cele dou iruri sunt sau nu anagrame (s
conin aceleai litere, n orice ordine de apariie).
Exemplu:
Pentru irurile curat si urcat se afieaz sirurile sunt anagrame
Pentru irurile problema si emblema se afieaz sirurile nu sunt anagrame

14. Se d un vector cu n componente numere ntregi (datele se citesc de la tastatur, n<=50).
Rspundei urmtoarelor cerine, utiliznd subprograme recursive:
a) S se calculeze i s se afieze suma componentelor pozitive din vector.
b) S se verifice dac componentele vectorului sunt ordonate cresctor. Se va afia un mesaj
adecvat.
Exemplu: Fie n=5 i vectorul cu componentele (5,-4,3,7,-1). Se va afia valoarea 15 i mesajul
Vectorul nu este ordonat.

15. Se d un vector cu n componente numere naturale (datele se citesc de la tastatur, n<=50).
S se nlocuiasc componentele neprime din vector cu numrul divizorilor acestora. Se vor
utiliza subprogramele recursive: nrd care va implementa un algoritm de numrare a
divizorilor unui numr natural i inlocuire prin care se vor nlocui componentele neprime
din vector.
Exemplu: Dac vectorul citit este (5,6,1,0,15), dup nlocuire devine (5,4,1,0,4).

Probleme pentru ATESTAT - programare
2013

16. Se d un vector cu n componente numere naturale (datele se citesc de la tastatur, n<=50).
S se afieze componentele vectorului care conin o cifr dat, nenul (cifra se citete de la
tastatur). Se vor utiliza subprogramele recursive:
- verific care va implementa un algoritm pentru verificarea existenei unei cifre ntr-un
numr;
- afi pentru afiarea componentelor unui vector care conin o cifr dat.
Exemplu: Dac vectorul citit este (15,621,14,502,155) i c=5 se vor afia valorile: 15 502
155.

17. Se d un graf neorientat cu n noduri. Numrul de noduri i muchiile grafului se citesc din
fiierul graf.txt. S se verifice dac graful este complet i s se afieze un mesaj adecvat.
Dac graful nu este complet s se afieze muchiile care ar trebui adugate astfel nct
graful s devin complet.
Exemplu: Dac fiierul graf.txt are urmtorul coninut:
5
1 3
1 4
1 5
2 4
3 5
Se va afia mesajul Graful nu este complet dup care se vor afia muchiile lips:
1 2
2 3
2 5
3 4
4 5

18. Se d un graf neorientat cu n noduri. Numrul de noduri i muchiile grafului se citesc din
fiierul graf.txt. S se verifice dac graful este regulat. n situaia n care graful nu este
regulat s se afieze nodurile terminale i numrul de noduri izolate. (Un graf neorientat se
numete regulat dac toate nodurile sale au acelai grad).
Exemplu: Dac fiierul graf.txt are urmtorul coninut:
5
1 3
1 5
2 4
3 5
Se va afia mesajul Graful nu este regulat dup care se vor afia nodurile terminale: 2, 4 i
numrul de noduri izolate: 0
19. Se d graful un graf neorientat pentru care datele se citesc din fiierul graf.txt. S se
verifice dac un ir de m numere citite de la tastatur este lan n graf i s se afieze un
mesaj adecvat. Dac formeaz lan, s se verifice dac lanul este elementar.
Exemplu: Dac fiierul graf.txt are urmtorul coninut:
5
1 3
Probleme pentru ATESTAT - programare
2013

1 4
1 5
2 4
3 5
irul de numere 2 4 1 3, citit de la tastatur, formeaz lan elementar.
irul de numere 4 2 3 1 5 nu formeaz lan.

20. Se citete de la tastatur o serie de n numere ntregi. Afiai primul i ultimul numr par din
serie. Afirile se vor face cu text semnificativ, cte o informaie pe linie. Dac nu exist
cel puin 2 numere pare n serie se va afia textul Nu exista.
Exemple:
1. n = 6, seria : 6 1 2 7 4 9, se va afia 6 i 4.
2. n=4, seria : 6 1 3 7 5 9, se va afia Nu exista.

21. n fiierul text atestat.in se gsesc pe prima linie dou numere ntregi n i k
(1<k<n<=1000), iar pe urmtoarea linie n numere ntregi separate prin spaii. Afiai n
fiierul text atestat.out primele k minime din seria de n numere de pe linia a doua a
fiierului de intrare.
Exemplu: n=5, k=3, seria este: 3, 2, -3, 6 i -1, se va afia -3, -1, 2.
22. Se citesc de la tastatur dou numere ntregi n i m. Construii i afiai pe ecran, linie cu
linie o matrice n*m construit dup regula: a[i][j] = min(i,j). Numerotarea liniilor,
respectiv coloanelor matricei ncepe de la 1.
Exemplu: Pentru n=2 i m=3 se va afia matricea:
1 1 1
1 2 2

23. Fiierul text graf.in conine pe prima linie un numr natural n reprezentnd numrul de
vrfuri ale unui graf neorientat, iar pe fiecare din urmtoarele n rnduri cte n valori de 0 i
1 separate prin spaii, reprezentnd elementele unei linii a matricei de adiacen
corespunztoare grafului.
a) S se scrie o funcie grad ce primete ca parametru un numr natural x i returneaz
gradul vrfului x.
b) S se scrie programul C++ care citete datele din fiier i care afieaz n fiirul text
graf.out, pe primul rnd, separate prin cte un spaiu vrfurile terminale ale grafului,
sau mesajul Nu exist, dac n graf nu sunt vrfuri terminale, folosind apeluri utile ale
subprogramului grad.
Exemplu: Dac fiierul graf.in are forma:
5
0 0 1 0 1
0 0 0 1 1
1 0 0 0 0
0 1 0 0 0
1 1 0 0 0
atunci fiierul graf.out va conine numerele 3 i 4.
Probleme pentru ATESTAT - programare
2013

24. Fiierul text muchii.txt conine pe prima linie un numr natural n reprezentnd numrul
de vrfuri ale unui graf neorientat, pe al doilea rnd un numr natural m reprezentnd
numrul de munchii ale unui graf neorientat, iar pe fiecare din urmtoarele m rnduri cte
dou numere naturale, separate pritr-un spaiu, reprezantnd extremitile unei muchii a
grafului.
a) S se scrie o funcie grad ce primete ca parametru un numr natural x i returneaz
gradul vrfului x.
b) S se scrie programul C++ care citete datele din fiier, construiete matricea de
adiacen asociat grafului, i care afieaz n fiirul text grade.txt, separate prin cte
un spaiu vrfurile de grad maxim ale grafului, folosind apeluri utile ale subprogramului
grad.
Exemplu: Dac fiierul muchii.txt are forma:
5
6
1 2
2 3
2 4
3 4
3 5
4 5
atunci fiierul grade.txt va conine numerele 2, 3 i 4.

25. Fiierul text adiacenta.in conine pe prima linie un numr natural n reprezentnd
numrul de noduri ale unui graf orientat, iar pe fiecare din urmtoarele n rnduri cte n
valori de 0 i 1 separate prin spaii, reprezentnd elementele unei linii a matricei de
adiacen corespunztoare grafului.
a) S se scrie o funcie grad_intern ce primete ca parametru un numr natural x i
returneaz gradul intern al nodului x.
Funcia grad_extern primete ca parametru un numr natural x i returneaz gradul
extern al nodului x.
b) S se scrie programul C++ care citete datele din fiier, i care afieaz n fiirul text
noduri.out, separate prin cte un spaiu nodurile grafului care au gradul intern egal cu
gradul extern, folosind apeluri utile ale subprogramelor grad_intern i grad_extern.
Exemplu: Dac fiierul adiacenta.in are forma:
5
0 1 1 1 0
0 0 0 0 1
0 1 0 0 0
0 0 0 0 0
1 0 0 0 0
atunci fiierul noduri.out va conine numerele 3 i 5.

26. Fiierul text arce.txt conine pe prima linie un numr natural n reprezentnd numrul de
noduri ale unui graf orientat, pe al doilea rnd un numr natural m reprezentnd numrul de
arce ale unui graf orientat, iar pe fiecare din urmtoarele m rnduri cte dou numere
naturale separate prin spaii, reprezentnd arcele corespunztoare unui graf orientat.
Probleme pentru ATESTAT - programare
2013

a) S se scrie o funcie grad_intern ce primete ca parametru un numr natural x i
returneaz gradul intern al nodului x.
Funcia grad_extern primete ca parametru un numr natural x i returneaz gradul extern
al nodului x.
b) S se scrie programul C++ care citete datele din fiier, construiete matricea de
adiacen asociat grafului, i care afieaz n fiirul text izolate.txt, separate prin cte
un spaiu nodurile izolate ale grafului, sau mesajul Nu exist, dac n graf nu sunt
noduri izolate, folosind apeluri utile ale subprogramelor grad_intern i grad_extern.
Exemplu: Dac fiierul arce.txt are forma:
5
3
1 2
2 1
2 4
atunci fiierul izolate.txt va conine numerele 3 i 5.

27. Se citesc numere naturale din fiierul text numere.txt. S se afieze numerele care au
proprietatea de palindrom (numrul citit de la dreapta la stnga este egal cu numrul citit de
la snga la dreapta) i suma cifrelor s fie par. Se vor folosi: un subprogram palin care va
implementa un algoritm de determinare a proprietii de numr palindrom i un
subprogram care s calculeze suma cifrelor unui numr natural.
Exemplu: Pentru numerele 12, 12321, 565, 45, 18, 121 se va afia 565, 121.

28. Se citesc numere naturale din fiierul numere.txt. Cte dintre aceste numere au toate
cifrele cifre impare. Dac nu exist astfel de numere se va afia un mesaj corespunztor. Se
va folosi un subprogram care s verifice cerina din enun referitoare la paritatea cifrelor.
Exemplu: Pentru numerele 135, 57, 279, 791, 56 se va afia 3, iar pentru numerele 1234, 56,22,
54, 78 se va afisa mesajul Nu exist nici un numr cu proprietatea cerut.

29. Se citesc n numere ntregi din fiierul numere.txt. S se afieze cel mai mare divizor
comun dintre suma tuturor numerelor i produsul celor cuprinse ntre 2 numere date. In
fiier pe prima linie vor fi valorile pentru n si cele 2 numere date, iar pe urmatoarea linie
cele n numere.
Exemplu: Pentru numerele
5 17 27
12 34 25 6 21 se va afia cmmdc(98,525)=7.

30. Fie doi vectori a i b formai din n, respectiv m numere ntregi nenule (m,n<=50). Scriei un
program care citete, numrul de elemente i valorile din vectorul a, respectiv b i afieaz
valorile din vectorul a care sunt prime cu toate valorile din vectorul b. Dou numere ntregi
sunt prime ntre ele dac cel mai mare divizor comun al lor este 1.
Exemplu: Fie n=6, a=(77,35,55,15,121,11) i m=3, b=(18,20,10). Se vor afia numerele
77,121,11.

31. Se citesc 2 vectori a i b cu n, respectiv m componente ntregi. S se determine dac cei 2
vectori sunt identici. Dac nu, s se afieze poziia de unde nu mai coincid elementele.
Probleme pentru ATESTAT - programare
2013

Vectorii sunt identici dac au acelai numr de elemente i au aceleai valori.
Exemplu: Pentru n=3 i elementele: 1 2 3 i m=3 i elementele: 1 2 3, se va afia mesajul Cei
doi vectori sunt identici.

32. Scriei un program C/C++ care citete din fiierul date.in un numr natural n (1n20),
elementele unei matrice cu n linii i n coloane, numere ntregi din intervalul [-100,100] i
afieaz pe ecran media aritmetic a elementelor prime ale matricei, care sunt situate
deasupra diagonalei principale. Dac nu exist elemente prime situate deasupra diagonalei
principale, programul va afia mesajul Nu exista!.
Exemplu: pentru n=4 i matricea de mai jos se afieaz valoarea 3.33333
-1 2 -4 5
0 6 3 1
2 4 2 0
3 -5 1 -3

33. Scriei un program C/C++ care citete din fiierul date.in un numr natural n (1n50),
elementele unei matrice cu n linii i n coloane, numere naturale din intervalul [0,99999] i
afieaz pe ecran numrul elementelor palindrom ale matricei, care sunt situate deasupra
diagonalei secundare. Dac nu exist elemente palindrom situate deasupra diagonalei
secundare, programul va afia mesajul Nu exista!.
Un numr natural este palindrom dac numrul citit de la stnga la dreapta este acelai cu
numrul citit de la dreapta la stnga.
Exemplu: pentru n=4 i matricea de mai jos se afieaz valoarea 4.
112 121 444 56
102 696 123 17
262 413 221 10
393 585 111 33

34. Scriei un program C/C++ care citete din fiierul date.in un numr natural n (1n100),
un numr natural m (1m10) i elementele unei matrice cu n linii i m coloane, cifre
binare, fiecare linie a tabloului reprezint cifrele unui numr n baza 2. S se afieze pe linii
separate ale ecranuluinumerele care se obin prin transformarea fiecrei linii din matrice n
numrul corespunztor n baza 10.
Exemplu: Dac fiierul conine
3 7
1 1 1 1 0 0 1
1 0 1 0 1 0 1
1 0 0 0 1 1 0
Atunci se va afia:
121
85
70

S-ar putea să vă placă și