EXAMEN PENTRU OBTINEREA ATESTATULUI PROFESIONAL – an şcolar 2011-2012SPECIALIZAREA: MATEMATICĂ INFORMATICĂ JUDEŢUL GALAŢI
SUBIECTELE DE PROGRAMARE Au fost propuse un număr de 40 de probleme de programare care trebuie rezolvate la clasă împreună cu elevii în timpul anului şcolar 2011-2012. Toate problemele propuse se vor regăsi în biletele de examen pentru obţinerea atestatului profesional. Subiectele de programare propuse pentru examenul de atestat profesional doresc să evalueze elevii în următoarele direcţii : 1) Identificarea datelor care intervin într-o problemă şi a relaţiilor dintre acestea; 2) Elaborarea algoritmilor de rezolvare a problemelor; 3) Aplicarea algoritmilor fundamentali în prelucrarea datelor; 4) Aplicarea în mod creativ a algoritmilor fundamentali în rezolvarea unor probleme concrete; 5) Implementarea algoritmilor într-un limbaj de programare; 6) Identificarea necesităţii structurării datelor în tablouri, structuri, liste; 7) Prelucrarea datelor structurate în tablouri unidimensionale şi bidimensionale; 8) Utilizarea fişierelor text pentru introducerea datelor şi extragerea rezultatelor; 9) Alegerea celui mai eficient algoritm de rezolvare a unei probleme; 10) Analizarea unei probleme în scopul identificării datelor necesare şi alegerea modalităţilor adecvate de structurare a datelor care intervin într-o problemă; 11) Identificarea avantajelor utilizării diferitelor metode de structurare a datelor necesare pentru rezolvarea unei probleme; 12) Utilizarea tablourilor, a şirurilor de caractere şi a structurilor de date neomogene în modelarea unor situaţii problemă; 13) Implementarea unor algoritmi de prelucrare a tablourilor , a şirurilor de caractere şi a structurilor neomogene ; 14) Recunoaşterea situaţiilor în care este necesară utilizarea unor subprograme; 15) Analiza problemei în scopul identificării subproblemelor acesteia; 16) Utilizarea corectă a subprogramelor predefinite şi a celor definite de utilizator; 17) Descrierea şi aplicarea mecanismului recursivităţii; 18) Descrierea operaţiilor specifice listelor simplu înlănţuite şi elaborarea unor subprograme care să implementeze aceste operaţii; 19) Analizarea în mod comparativ a avantajelor utilizării diferitelor metode de structurare a datelor necesare pentru rezolvarea unei probleme; 1. Se citeşte de la tastatură un număr natural n(5<n<100) şi apoi n valori întregi, fiecare valoare având maxim 4 cifre. Să se scrie în fişierul atestat.out toate numerele impare din sir, în ordine crescătoare, separate prin câte un spaţiu.
Exemplu Date de intrare
atestat.out
n=6
-7 5 15 27
v=( 12, -14, -7, 15, 27, 5)
2. Se citesc de la tastatură un număr natural n şi apoi n numere naturale (n<100). Să se verifice dacă suma numerelor din şir este număr prim. La ieşire se va afişa numărul şi o afirmaţie care atestă sau nu valoarea de număr prim. Exemplu: Date de intrare
Date de ieşire
n=12
428 nu este număr prim
2 31 24 63 8 16 82 98 23 5 47 29 3. Se citeşte de la tastatură un număr natural nenul n ( 5< n< 30), apoi se citesc pe rând n numere naturale formate din cel mult 4 cifre fiecare. Se cere : a)
să se afişeze pe ecran, pe linii diferite, cel mai mic număr a şi cel mai mare număr b din şirul dat
b)
să se afişeze in fişierul atestat.out cel mai mare divizor comun al numerelor a şi b,
determinate la punctul anterior. Exemplu Date de intrare
Date de ieşire
a) n = 6
44
123, 55, 372, 3465, 242, 44
3465
b) 44
atestat.out
3465
11
4. Se citeşte de la tastatură un număr natural n (1n4). Să se afişeze la ieşirea standard toate numerele de n cifre care sunt prime. Exemplu: Date de intrare n=2
Date de ieşire 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Explicaţie Sunt afişate toate numerele prime de 2 cifre
5. Se citesc de la tastatură un număr natural n (2n100) şi un şir de n numere întregi cu maxim 4 cifre. Să se mute toate valorile nule la începutul şirului, fără a schimba ordinea relativă a valorilor nenule. Afişaţi şirul astfel obţinut. Exemplu: Date de ieşire
Date de intrare n=8
0 0 0 74 125 58 -47 -5
74 125 0 0 58 -47 -5 0
Explicaţie Zerourile s-au mutat la începutul şirului.
6. Se citeşte de la tastatură un număr natural n, n>100 . Scrieţi un program care returnează numărul format din prima şi ultima cifră a numărului n şi afişaţi-l pe ecran. Exemplu: Date de intrare n = 2987
Date de ieşire 27
7. Se citeşte de la tastatură n, număr natural, n ≥2. Să se afişeze cea mai mică putere a lui 2 mai mare sau egală cu n. Exemplu: Date de intrare n = 373
Date de ieșire 512
Explicaţii 512 este 29 iar 28=256
8. În fişierul atestat.in sunt scrise numere naturale cu cel mult patru cifre fiecare. Să se afişeze penultima valoare care reprezintă un pătrat perfect. În cazul în care nu există cel puţin două pătrate se va afişa mesajul “NU există!” Exemplu: atestat.in 3 4 6 100 5 8 1 6 625 3 9 8 12
Date de ieşire 625
9. Se citeşte de la tastatură un număr natural nenul n ( 5< n< 30), apoi se citesc pe rând n numere reale formate din cel mult 4 cifre fiecare. Să se afişeze pe ecran media aritmetică a numerelor negative din şir. Dacă şirul nu conţine numere negative, se va afişa 0. Exemplu : Date de intrare n=6 v = ( -56.765, 2.3, 4.56, -1.2, -1.8, 3)
Date de ieşire –19.92
10. Scrieţi un program care citeşte de la tastatură o frază având maximum 100 de caractere, în care cuvintele sunt separate prin câte un spaţiu; programul construieşte în memorie şi afişează pe ecran un şir ce conţine doar primul caracter al fiecăruia dintre cuvintele frazei, în ordinea în care acestea apar în frază, ca în exemplu. Exemplu:
Date de intrare Ana sustine atestatul la informatica
Date de ieşire Asali
11. Se consideră un vector cu n elemente, numere întregi. Să se verifice dacă o valoare x, citită de la tastatură, apare sau nu în vector. În caz că se află printre valorile din vector se va preciza şi în ce poziţie apare. În caz contrar se va afişa mesajul NU. Exemplu: Date de intrare n= 5 v = (138, 12, 1, 4, 13) x = 13 n= 5 v = (13, 12, 1, 4, 13) x = 20
Date de ieșire Valoarea 13 apare în poziţia 5.
NU
12. Să se scrie un program care numặră cuvintele dintr-un text citit din fişierul cuvinte.in. Textul conţine cuvintele separate numai printr-un spaţiu, fără semne de punctuaţie, singurul semn de punctuaţie este „.‟ de la sfârşitul textului. Numărul de cuvinte se va afişa pe ecran. Exemplu: cuvinte.in Ana are mere.
Date de ieșire 3
13. Să se afişeze numărul format cu cifrele de pe poziţiile pare ale unui număr n dat (n<1.000.000.000). Numărătoarea cifrelor se face de la stânga la dreapta. Exemplu: Date de ieşire
Date de intrare
Explicaţie
n=12345678
2468
Cifra 1 e pe poziţia 1, cifra 2 – pe poziţia 2 etc.
n=3050789
8
Numărul 008 are zerouri nesemnificative în faţă
14. Scrieţi un program care citeşte de la tastatură un şir format din maximum 100 caractere, construieşte în memorie şi afişează un nou şir de caractere obţinut din şirul iniţial prin eliminarea tuturor caracterelor care nu sunt caractere cifră. În cazul în care noul şir are lungimea 0 se va afişa mesajul Şir vid. Exemplu: Date de intrare Andrei are nota 10 la informatica
Date de ieșire 10
15. Scrieţi un program care citeşte de la tastatură două valori naturale m şi n(1≤m≤24, 1≤n≤24) şi construieşte în memorie un tablou bidimensional cu m linii şi n coloane format din toate numerele naturale de la 1 la m*n parcurgând pe coloane, ca în exemplu. Programul va afişa pe ecran, pe m linii, tabloul obţinut, elementele fiecărei linii fiind separate prin câte un spaţiu. Exemplu: Date de intrare Date de ieșire m=5 1 6 11 16 n=4 2 7 12 17 3 8 13 18 4 9 14 19 5 10 15 20 16. Se citesc de la tastatură un număr natural n (2n100) şi un şir de n numere naturale cu maxim 4 cifre. Să se verifice dacă şirul de numere formează sau nu o mulţime (are elemente distincte două câte două). Se va afişa DA sau NU. Exemplu: Date de ieşire
Date de intrare n=8
Explicaţie
NU
Elementele 12 şi 4 se repetă
DA
Elementele formează o mulţime.
5 10 12 51 4 12 4 6 n=6 5 10 12 51 4 6
17. Fişierul “contur.in” conţine pe prima linie două numere m şi n (m,n ≤ 50), ce reprezintă numărul de linii, respectiv numărul de coloane ale unei matrice. Pe următoarele m rânduri se află câte n numere întregi, separate prin spaţiu, reprezentând elementele matricii. Să se afişeze elementele de pe conturul matricei, în sens invers acelor de ceas, începând din colţul dreapta-sus. “contur.in” 6 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Date de ieşire 5 4 3 2 1 6 11 16 21 26 27 28 29 30 25 20 15 10
Explicaţie 1 6 11 16 21 26
2 7 12 17 22 27
3 8 13 18 23 28
4 9 14 19 24 29
5 10 15 20 25 30
18. Se citeşte de la tastatură un cuvânt de minim 3 şi maxim 50 de litere mici ale alfabetului englez. Să se afişeze triunghiul de litere format astfel: pe prima linie, litera sau cele 2 litere din mijlocul cuvântului. Pe a doua linie, cele 3 sau 4 litere din mijlocul cuvântului. Şi tot aşa, pe ultima linie fiind scris cuvântul iniţial. Exemplu: Date de intrare informatica
informatic
Date de ieşire m rma ormat formati nformatic informatica rm orma format nformati informatic
Explicaţie Practic, dispar prima şi ultima literă din cuvânt, doar că se face construcţia triunghiului de jos în sus.
19. În fişierul „cuvinte.in” se află două propoziţii, scrise fiecare pe câte un rând. Propoziţiile au maxim 100 de caractere. Să se afişeze în fişierul „cuvinte.out”, în ordine alfabetică, cu litere mici, literele care apar în ambele cuvinte (nu contează dacă sunt scrise cu literă mare sau mică). Exemplu: ”cuvinte.in” Azi este joi.
”cuvinte.out”
Explicaţie
aeiost
Simona este prietena mea.
20. În fişierul „numere.in” se află scrise cel mult 1.000.000 de numere naturale cu maxim 4 cifre, separate prin spaţii. Să se afişeze în fişierul „numere.out” cea mai mică valoare, precum şi de câte ori apare. Exemplu: ”numere.in” 25 69 14 58 987 1001 14 25 25 56 14 85
”numere.out” 14 3
Explicaţie Cel mai mic număr este 14 şi apare de 3 ori
21. Scrieţi un program care citeşte de la tastatură două valori naturale m şi n (1≤m≤24, 1≤n≤24) şi construieşte în memorie un tablou bidimensional cu m linii şi n coloane format din toate numerele naturale de la 1 la m*n, parcurgând liniile impare de la stânga la dreapta iar cele pare de la dreapta la stânga ca în exemplu. Programul va afişa pe ecran, pe m linii, tabloul obţinut, elementele fiecărei linii fiind separate prin câte un spaţiu. Exemplu:
Date de intrare
Date de ieșire
m=4
1
2
3 4 5
n=5
10 9
8 7 6
11 12 13 14 15 20 19 18 17 16 22. Fişierul “matrice.in” conţine pe prima linie un număr n ≤ 50, ce reprezintă numărul de linii şi numărul de coloane ale unei matrice pătratice. Pe următoarele n rânduri se află câte n numere întregi, separate prin spaţiu, reprezentând elementele matricii. Se citeşte de la tastatură un număr k (k ≤ n). Să se afişeze pe ecran matricea obţinută prin interschimbarea liniei k a matricii din fişier cu coloana k. Se va folosi o funcţie interschimb(a, b) care are rolul de a interschimba între ele elementele a şi b. Exemplu: Se citeşte de la tastatură k=4 “matrice.in” 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Date de ieşire 1 2 3 16 5 6 7 8 17 10 11 12 13 18 15 4 9 14 19 24 21 22 23 20 25
Explicaţie Elementele de pe linia şi coloana 4 au fost boldate în exemplu
23. Fişierul atestat.in conţine pe prima linie un număr natural n ( 0 < n < 5000), iar pe a doua linie, separate prin câte un spaţiu, n numere naturale, formate din cel mult două cifre fiecare. Scrieţi un program care determină şi scrie în fişierul atestat.out, toate numerele citite de pe doua linie a fişierului atestat.in, care apar de cel puţin două ori. Exemplu : atestat.in 11 23 12 54 12 78 5 67 23 5 78 23
atestat.out 23 12 78 5
Explicaţie Numerele precizate apar de 2 ori
24. Exemplu: Date de intrare a=4, r=3 şi n=5
Date de ieşire 4 7 10 13 16
25. Să se scrie o funcţie recursivă care determină suma elementelor de pe diagonala principală dintr-o matrice pătratică cu n linii şi n coloane (1≤n≤24). Exemplu:
Date de intrare
Date de ieşire
n=4
17
1234 4826 2351 8123
26. Se consideră subprogramul nr care primeşte prin parametrul n un număr natural cu cel mult 9 cifre şi care întoarce tot prin n inversul lui n. a) Scrieţi definiţia subprogramului nr. b) Scrieţi programul care citeşte de la tastatură un număr natural n (n≤100) apoi n numere naturale cu cel mult 9 cifre fiecare şi afişează pe ecran numerele palindrome din şirul valorilor citite. Se vor folosi apeluri utile ale funcţiei nr. Exemplu: pentru n=5 şi numerele citite: 121 32434 33933 28 101 , valorile afişate sunt: 121 33933 101. 27. Se consideră subprogramul prelucrare care are ca parametri un număr natural n cu maximum 9 cifre şi o cifră c. Subprogramul va returna numărul obţinut din n după eliminarea tuturor apariţiilor cifrei c. a) Scrieţi definiţia subprogramului prelucrare. b) Pe prima linie a fişierului text DATE.IN se găsesc, separate prin câte un spaţiu, numere naturale de cel mult 9 cifre fiecare. Scrieţi un program care citeşte numerele din acest fişier, elimină toate cifrele impare din fiecare dintre aceste numere şi apoi afişează numerele astfel obţinute, separate prin câte un spaţiu. Se vor folosi apeluri utile ale subprogramului prelucrare. Dacă un număr din fişierul DATE.IN în urma prelucrării nu conţine nicio cifră pară nenulă, acesta nu se va mai afişa. Exemplu: DATE.IN
Date de ieşire
25 7 38 130 45127 0 35 60 15
2 8 42 60
28. Se citesc n (n≤100) numere întregi cu cel mult 4 cifre fiecare. Să se afişeze numerele citite astfel: la început numerele pare în ordine crescătoare şi la sfârşit numerele impare în ordine descrescătoare. Exemplu: Date de intrare Date de ieşire n=9 24 3 1 4 8 5 17 6 8
4 6 8 8 24 17 5 3 1
29. Se consideră n, natural nenul (2<n<30), ce reprezintă numărul de componente ale unui vector de numere întregi. Să se scrie un program care citeşte componentele vectorului şi care afişează elementul (elementele) din vector cu cei mai mulţi divizori. Exemplu: Date de intrare
Date de ieşire
n=9
72 234
20 72 4 13 14 56 78 18 234
30. Scrieţi un program care construieşte o matrice pătrată de ordin n formată din valorile 1 şi 2 astfel încât elementele de pe diagonala principalǎ şi secundară sǎ fie egale cu 1 iar restul elementelor cu 2. Valoarea lui n se citeşte de la tastatură: n număr natural, iar matricea se va afişa pe ecran, câte o linie a matricei pe fiecare rând pe ecran cu spaţii între elementele fiecărei linii. Exemplu: Date de intrare n=5
Date de ieşire 12221 21212 22122 21212 12221
31. Se consideră o matrice a cu n linii şi m coloane, cu elemente numere întregi, toate citite de la tastatură. Să se determine şi să se afişeze pe ecran linia (liniile) din matrice care conţine cele mai multe elemente nenule. Exemplu: Date de intrare n=4, m=5 20451 10060 84960 11500
Date de ieşire Linia 1 conţine 4 elemente nenule Linia 3 conţine 4 elemente nenule
32. Se citeşte de la tastatura un numar natural n şi un vector a, cu n elemente, cifre. Afişati cel mai mic număr natural care se poate forma cu toate cele n cifre din vectorul a. Exemplu: Date de intrare n=5 a=(4,0,0,2,1)
Date de ieşire 10024
33. Scrieţi un program care citeşte de la tastatură un număr natural n ( 2 < n <=15) şi contruieşte in memorie o matrice A cu n linii şi n coloane în care oricare element aflat pe prima linie sau pe prima coloană are valoarea 1 şi oricare alt element Aij din matrice este egal cu suma a două elemente din matrice, primul aflat pe linia i şi pe coloana j-1, iar cel deal doilea pe coloana j şi pe linia i-1. Matricea va fi afişată pe ecran, linie cu linie, numerele de pe aceeaşi linie fiind separate prin cate un spaţiu. Exemplu : Date de intrare n=4
Date de ieşire 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20
34.
Scrieţi un program care citeşte de la tastatură o frază de maxim 255 de caractere (
litere mari şi litere mici ale alfabetului englez) ale cărei cuvinte sunt separate prin câte un spaţiu şi afişează pe ecran numărul total al cuvintelor din frază, precum şi lungimea maximă a unui cuvânt din frază. Exemplu : Date de intrare Astazi am mers la un spectacol care m-a incantat
Date de iesire nr_cuvinte = 9 lmax = 9
Explicatii In fraza sunt 9 cuvinte iar cuvantul care are cea mai mare lungime este “spectacol” care are 9 caractere.
35. Un şir cu maxim 255 de caractere conţine cuvinte separate prin câte un spaţiu. Cuvintele sunt formate numai din litere mici ale alfabetului englez. Scrieţi un program care citeşte de la tastatură un astfel de şir şi il afişează pe ecran modificat, inversând prin oglindire doar cuvintele care încep cu o vocală. Date de intrare informatica este o disciplina frumoasa
Date de iesire Explicatii acitamrofni etse o disciplina Au fost inversate cuvintele informatica si este frumoasa.
36. Scrieţi un program care citeşte de la tastatură un număr natural nenul n ( n <= 100) şi numere naturale de maxim 3 cifre ; primele n reprezintă elementele unui tablou unidimensional a, iar urmatoarele n elementele unui tablou unidimensional b. Programul construieşte in memorie şi afişează pe ecran cele n elemente ale unui tablou unidimensional
c, in care orice element ci este definit astfel : a[i] concatenate cu b[i] daca a[i]<b[i] , altfel b[i] concatenate cu a[i].
Exemplu Date de intrare
Date de iesire
Explicatii
n=3
c = ( 112, 123234, 15345)
c1=112 deoarece a1>b1
a=(12, 123, 345) b = ( 1, 234, 15)
37. Scrieţi un program care citeşte de la tastatură o frază de maxim 255 de caractere ( litere mari ale alfabetului englez), ale cărei cuvinte sunt despărţite prin câte un spaţiu şi afişează pe primul rând al ecranului, in ordine alfabetică, scrise o singură dată, consoanele care au apărut in frază. Literele afişate sunt separate prin câte un spaţiu. Exemplu: Date de intrare LA BACALAUREAT SUBIECTELE AU FOST USOARE
Date de iesire BCFLRST
Explicatii
38. Fişierul atestat.in 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 întregi separate prin câte un spaţiu, formate fiecare din cel mult 4 cifre, reprezentând un şir de n întregi . Să se scrie un program care: a) afişează pe ecran, în linie, valorile absolute ale numerelor din şir, separate prin câte un spaţiu; b) afişează toate numerele impare din şir, separate prin câte un spaţiu. Exemplu: Date de intrare Date de iesire n=10 a) 23 76 56 678 90 132 23 32 987 345 23 -76 56 678 90 -132 23 32 -987 345 b) 23 -987 345
39. Se consideră fişierul f.in ce conţine pe prima linie un număr natural n (n<=20) ce semnifică numărul de linii ale unei matrice pătratice de numere întregi iar pe următoarea linie elementele matricei în ordinea parcurgerii acesteia pe linii. Afişaţi pe ecran suma elementelor de pe cele două diagonale ale matricei.
Exemplu
Date de ieşire
Date de intrare 4
14 18
1234597321096044
40. Sa se verifice dacă doua cuvinte citite de la tastatură sunt anagrame. Se va afişa DA sau NU. Cuvintele pot conţine maximum 20 de caractere reprezentând litere mari sau mici ale alfabetului englez. Exemplu Date de ieşire
Date de intrare CABINET
DA
TEBANIC CABINET TABANIC
NU
Explicaţie Două cuvinte sunt anagrame dacă au aceleaşi litere dar sunt scrise în altă ordine