Ministerul Educa iei ✁ i Cercet✂ rii - Serviciul Na ional de Evaluare ✁ i Examinare
EXAMENUL DE BACALAUREAT – 2007
Proba scris la INFORMATIC PROBA E, limbajul C/C++ Varianta 72
♦ Toate subiectele sunt obligatorii. Se acord 10 puncte din oficiu.
♦ Timpul efectiv de lucru este de 3 ore. ♦ În programele cerute la subiectele II i III, identificatorii utiliza i trebuie s respecte preciz rile din enun (bold), iar în lipsa unor preciz ri explicite, nota iile trebuie s corespund cu semnifica iile asociate acestora (eventual în form prescurtat ).
SUBIECTUL I (40 de puncte)
Pentru fiecare din itemii de la 1 la 8, scrie i pe foaia de examen litera corespunz toare r spunsului corect. Fiecare r spuns corect se noteaz cu 5 puncte. 1. Se genereaz✂ în ordine cresc✂toare toate numerele de 4 cifre, care se pot forma cu elementele mul imii {0,1,2,3,4}. Primele solu ii generate sunt, în ordine, 1000,1001,1002,1003,1004,1010,1011,1012…. S✂ se precizeze num✂rul anterior ✁ i cel urm✂tor secven ei de numere consecutive: 3430,3431,3432,3433 a. 3421 i 3440 b. 3424 i 3440 c. 3421 i 3434 d. 3424 i 3434 2. Preciza i care dintre nodurile grafului orientat a c✂rui matrice 0 1 0 0 0 0 0 0 de adiacen ✂ este reprezentat✂ al✂ turat, au gradul interior egal 0 0 1 0 0 0 1 0 cu gradul exterior. 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 a. 1, 2, 5, 7, 8 b. 1, 2, 5, 6, 8 c. 2, 5, 6, 7, 8 d. 1, 2, 5, 7, 6 3. Fie variabilele reale a, b ✁ i x cu a <= b. Care dintre urm✂toarele expresii logice este adev✂rat✂, dac✂ ✁ i numai dac✂ x ∉ [a, b] ?
a. (x >= a) || (x <= b) b. (x > a) && (x < b)
c. !(x >= a) || !(x <= b) d. (x >= a) && (x <= b) 4. Care este cea mai mare valoare ini ial✂ a a = 5; variabilei întregi ind, pentru care urm✂ toarea do secven ✂ de program va afi✁ a exact un caracter { printf(”*”); |cout << ’*’; ’*’ ? ind++; } while (a <= ind); a. 5 b. 4 c. 6 d. 3 5. Ce valoare va avea variabila întreag✂ s, în urma void Suma(int i, int &s) apelului Suma(1, s), ✁ tiind c✂ variabila global✂ { if (i <= n) n are valoarea 10, variabila s are înainte de apel { if(i % 2) s = s + 2; valoarea 0, iar subprogramul Suma este definit else s = s – 1; Suma(i + 1, s); al✂ turat? } } a. 8 b. 5 c. 7 d. 6 6. De câte ori se va executa for (i = 1; i < n; i++) instruc iunea de decizie din for (j = i; j < n; j++) secven a de program if (j % i == 0) al✂ turat✂, dac✂ valoarea printf(”%d%d”, i, j); | cout<<i<<j; variabilei întregi n este 8? a. 16 b. 38 c. 28 d. 36 7. Dac✂ variabila a este o matrice p✂tratic✂ de n linii ✁ i n s = 0; coloane cu elemente numere reale, atunci secven a for(i = 1; i <= n; i++) de instruc iuni al✂turat✂ , calculeaz✂ în variabila real✂ s = s + a[i][i]; s, suma: a. elementelor matricei b. elementelor de pe diagonala principal✂ c. elementelor de sub diagonala principal✂ d. elementelor de pe diagonala secundar✂
INFORMATIC✄, limbajul C/C++ 1 Varianta 72
Ministerul Educa iei ✁ i Cercet✂ rii - Serviciul Na ional de Evaluare ✁ i Examinare
8. Specifica i care este num✂rul maxim de muchii care pot fi
eliminate din graful al✂turat, astfel încât acesta s✂-✁ i men in✂ proprietatea de graf hamiltonian
a. 4 b. 2 c. 1 d. 3
SUBIECTUL II (20 de puncte)
Se consider programul pseudocod al turat: cite te n (nr natural de cel mult trei cifre) 1. Ce se va afi✁ a în urma execut✂ rii secven ei pseudocod al✂turat✂ , dac✂ pentru num✂ rul natural n se cite✁ te valoarea ┌pentru i 1,n execută │ cite te ai (nr. natural) 8, apoi cele opt componente ale vectorului a citite de la └■ tastatur✂ sunt în ordine: 0, 1, 3, 3, 5, 6, 4, 8. (7p.) s 0 2. Pentru n = 5 scrie i un alt set de valori pentru componentele ┌ pentru i 1,n execută ✁ irului, astfel încât variabila s s✂ aib✂ valoarea 0, în urma │ ┌dacă ai = i atunci execut✂rii algoritmului. (3p.) │ │ ai ai + i │ │altfel 3. Scrie i programul C/C++ corespunz✂tor algoritmului dat. (8p.) │ │ s s + 1 │ └■ 4. Înlocui i în secven a de pseudocod expresia ai = i cu o alt✂ └■ expresie, astfel încât variabila s s✂ afi✁ eze num✂rul de scrie s componente pare ale ✁ irului. (2p.) pentru i 1, n execută scrie ai
SUBIECTUL III (30 de puncte)
1. Se cite✁ te de la tastatur✂ un num✂r natural n (0 < n < 100) apoi n*n valori din mul imea {1,0}, care se memoreaz✂ într-o matrice cu n linii ✁i n coloane. S✂ se afi✁eze pe ecran num✂rul de ordine al liniei, care con ine cel mai mare num✂r de cifre de 1. Dac✂ dou✂ sau mai multe linii con in acela✁i num✂r de cifre de 1, se va afi✁a numai num✂rul de ordine al primei dintre aceste linii. Pentru n = 4 ✁ i matricea 0 1 0 0 se va afi✁a 2 1 0 1 1 0 1 0 1 0 1 1 1 (10p.) 2. a) Scrie i un subprogram cu numele Divide care s✂ primeasc✂ un num✂r natural nenul n ca parametru ✁ i returnez✂ prin intermediul parametrilor a ✁ i b, puterea la care apare 2 ✁ i respectiv 5 în descompunerea în factori primi a num✂rului n. De exemplu pentru num✂ rul n=150 în urma apelului subrogramului valoarea parametrului a va fi 1 iar a parametrului b va fi 2. (6p.) b) Scrie i programul care cite✁ te de la tastatur✂ trei numere naturale nenule x, y ✁ i z, ✁ i afi✁ eaz✂ pe ecran num✂ rul de zero-uri cu care se termin✂ produsul numerelor citite folosind apeluri ale subprogramului Divide. De exemplu pentru numerele 4, 375, 400 se va afi✁a valoarea 5. (4p.) 3. Pe prima linie a fi✁ ierului text BAC.IN se afl✂ un num✂r natural n (0 < n <= 1000), iar pe a doua linie n numere reale pozitive, desp✂r ite prin câte un spa iu. Scrie i programul C/C++ care cite✁ te datele din fi✁ ierul de intrare ✁ i scrie în fi✁ ierul text BAC.OUT pe o linie, desp✂r ite prin câte un spa iu, numerele care au partea întreag✂ num✂r prim. Dac✂ nici unul din numere nu are partea întreag✂ num✂ r prim atunci se va scrie în fi✁ ierul BAC.OUT mesajul NU EXISTA De exemplu, dac✂ BAC.IN con ine 6 12.095 31.567 5.789 789.834 1234.923 2.345 atunci fi✁ ierul BAC.OUT va con ine 31.567 5.789 2.345 (10p.)