Sunteți pe pagina 1din 9

Probleme pentru ATESTAT - programare 2013

Probleme propuse pentru examenul de ATESTAT la INFORMATIC Seciunea PROGRAMARE 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 1. 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 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]. 3.

Probleme pentru ATESTAT - programare 2013


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. 4. 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 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 5. 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 date.out 6 8 15 21 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 6.

Probleme pentru ATESTAT - programare 2013


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 date.out 4 linie 1 - > 16 2536 linie 2 - > 20 3584 linie 3 - > 12 1263 linie 4 - > 25 8359 7. 8. Fie sirului Fibonacci dat prin recurena F0=0, F1=1,,Fn=Fn-1 + Fn-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: 123 456 789 Se va afia: 12369874 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 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 13. 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. 14. 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). 15.

Probleme pentru ATESTAT - programare 2013


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. 16. 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 13 14 15 24 35 Se va afia mesajul Graful nu este complet dup care se vor afia muchiile lips: 12 23 25 34 45 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 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 13 15 24 35 Se va afia mesajul Graful nu este regulat dup care se vor afia nodurile terminale: 2, 4 i numrul de noduri izolate: 0 18. 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 13 19.

Probleme pentru ATESTAT - programare 2013


14 15 24 35 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. 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. 20. 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. 21. 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: 111 122 22. 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 00101 00011 10000 01000 11000 atunci fiierul graf.out va conine numerele 3 i 4. 23.

Probleme pentru ATESTAT - programare 2013


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 12 23 24 34 35 45 atunci fiierul grade.txt va conine numerele 2, 3 i 4. 24. 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 01110 00001 01000 00000 10000 atunci fiierul noduri.out va conine numerele 3 i 5. 25. 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 12 21 24 atunci fiierul izolate.txt va conine numerele 3 i 5. 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. 27. 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 0631 2420 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 37 1111001 1010101 1000110 Atunci se va afia: 121 85 70

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