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 47
♦ 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. ☎ tiind c✂ variabilele a ✁ i d sunt de tip int, iar variabilele b ✁ i c sunt de tip float, care dintre
urm✂toarele instruc iuni de atribuire nu este corect✂ :
a. a=sqrt(a*a); b. c=2*b*a%2; c. d=(b<c); d. b=b-c;
2. Câte cicluri elementare care difer✂ prin cel pu in o muchie se formeaz✂ prin ad✂ugarea unei singure
muchii la un arbore (ciclul este elementar dac✂ este format numai din noduri distincte, excep ie
facând primul ✁ i utimul)?
a. 2 b. 0 c. 1 d. 3
3. Se genereaz✂ toate ✁ irurile strict cresc✂ toare de numere naturale nenule mai mici sau egale cu 4,
având primul termen 1 sau 2, ultimul termen 4 ✁ i cu diferen a dintre oricare doi termeni afla i pe
pozi ii consecutive cel mult 2 , ob inându-se solu iile: (1,2,3,4), (1,2,4), (1,3,4), (2,3,4), (2,4).
Folosind aceea✁ i metod✂ , gener✂m toate ✁ irurile strict cresc✂toare de numere naturale nenule mai
mici sau egale cu 5, care dintre afirma iile urm✂ toare este adev✂ rat✂ :
a. imediat dup✂ solu ia (1,3,5) se genereaz✂ solu ia (2,3,4,5)
b. imediat dup✂ solu ia (2,3,5) se genereaz✂ (2,5)
c. penultima solu ie generat✂ este (2,4,5)
d. în total sunt generate 5 solu ii
4. Care dintre urm✂toarele variabile nu-✁ i modific✂ valoarea în urma execut✂ rii secven ei de
instruc iuni: c=2*a+b; a=a+b; a=c-a; b=c-2*a; indiferent de valorile lor ini iale? (a,b,c sunt
variabile de tip întreg).
a. doar c b. doar a i b c. toate d. niciuna
5. Se consider✂ lista dublu înl✂n uit✂ din desenul urm✂ tor : void sub ()
{
nod *man=sf;
3 4 5 6 7 8 while(man->inf>sf->inf/2)
p man=man->st;
sf nod *q=man;
Fiecare element re ine în câmpul inf un num✂r natural, în man->st->dr=q->dr;
câmpurile st ✁i dr re ine adresa nodului precedent ✁i q->dr->st=man->st;
respectiv adresa nodului urm✂tor din list✂. Variabilele globale p delete q;
✁i sf re in adresele primului ✁i respectiv ultimului element din }
list✂. O variabil✂ ce re ine adresa unui element este de tip nod.
Care va fi con inutul listei la o parcurgere de la stânga la
dreapta dup✂ apelul subprogramului sub()?
a. 3 5 6 7 8 b. 4 5 6 7 8 c. 3 4 5 6 7 8 d. 3 4 6 7 8
6. Se consider✂ graful orientat dat prin matricea de adiacen ✂ 0 1 1 0
al✂turat✂ . 0 0 0 0
Stabili i care dintre urm✂ toarele afirma ii este adev✂ rat✂. 0 1 0 1
0 0 0 0
a. graful con ine un circuit
b. exist✂ noduri cu gradul intern egal cu gradul extern
c. graful con ine un singur vârf cu gradul intern 0
d. graful nu con ine niciun drum elementar (un drum se nume✁ te elementar dac✂ vârfurile din
componen a sa sunt distincte)
7. Num✂ rul de interschimb✂ ri care se efectueaz✂ în cazul sort✂ rii cresc✂toare a ✁ irului de numere: 10,
9, 8, 7, 6, 5, 4, 3, 2, 1, 0 prin metoda bulelor este:
a. 121 b. 11 c. 10 d. 55
INFORMATIC✄, limbajul C/C++ 1 Varianta 47
Ministerul Educa iei ✁ i Cercet✂ rii - Serviciul Na ional de Evaluare ✁ i Examinare
8. Fie vectorul v cu indicii de la 0 la 7, vector ce re ine, în int f(int poz,int v[],int
ordine, urm✂ toarele valori întregi: c)
88, 777,789,976,998,7856,7887,8979 { if(poz<0) return c;
Care este apelul corect al subprogramului al✂ turat astfel else { int nr=v[poz];
încât valoarea returnat✂ s✂ fie 5? while(nr) {
if(nr%10<c)
c=nr%10;
nr=nr/10; }
return f(poz-1,v,c); }
}
a. printf(”%d”,f(5,v,9)) | cout<<f(5,v,9)
b. printf(”%d”,f(5,v,0)) | cout<<f(5,v,0)
c. printf(”%d”,f(4,v,9)) | cout<<f(4,v,9)
d. printf(”%d”,f(3,v,9)) | cout<<f(3,v,9)
SUBIECTUL II (20 de puncte)
Se consider programul pseudocod al turat:
cite te n {nr. natural}
S-a notat cu x%y restul împ✂r irii numerelor întregi x ✁ i y ✁ i cu [x]
partea întreag✂ a num✂rului real x. max 0
┌cât timp n≠0 execută
1. Ce se afi✁ eaz✂ dac✂ se cite✁ te 17358? (3p.) │ n [n/10]
2. Scrie i câte numere naturale de trei cifre pot fi introduse │ ┌dacă max<n%10 atunci
pentru variabila n astfel încât rezultatul afi✁ at s✂ fie 2? (3p.) │ │ max n%10
3. Scrie i programul pseudocod care s✂ fie echivalent cu │ └■
algoritmul dat ✁ i care s✂ con in✂ o structur✂ repetitiv✂ cu test └■
final. (7p.) scrie max
4. Scrie i programul C/C++ corespunz✂tor algoritmului dat. (7p.)
SUBIECTUL III (30 de puncte)
1. Scrie i un program C sau C++ care cite✁ te de la tastatur✂ un num✂ r natural n (n<=10) ✁ i elementele
(numere naturale mai mici decât 100) ale unui tablou bidimensional cu n linii ✁ i n coloane; programul
va determina ✁ i va afi✁ a pe ecran câte numere pare sunt situate pe „rama” tabloului. Rama unei
matrice este format✂ din prima linie, prima coloan✂, ultima linie ✁ i ultima coloan✂ a acesteia.
Exemplu: pentru n=4 ✁ i tabloul:
1 2 3 4 se va afi✁ a: 6
5 6 7 8
9 10 11 12
13 14 15 16 (10p.)
2. Realiza i urm✂toarele cerin e utilizând limbajul C sau C++:
a) Scrie i defini ia complet✂ a unui subprogram recursiv sub care returneaz✂ 1 dac✂ un num✂r natural mai
mic decât 30000, dat prin intermediul parametrului nr, este prim ✁i returneaz✂ 0 în caz contrar. (4p.)
b) Scrie i un program care cite✁te din fi✁ierul [Link] un num✂r natural n (n<1000) ✁i un ✁ir de n numere
naturale mai mici decât 30000, separate prin caracterul spa iu; programul determin✂ ✁i afi✁eaz✂ pe ecran
secven a de lungime maxim✂ de termeni ai ✁irului, afla i pe pozi ii consecutive ✁i care sunt numere prime,
separa i prin câte un caracter spa iu, folosind apeluri ale subprogramului de la punctul a.
Exemplu: Dac✂ fi✁ierul [Link] con ine valorile: 8 4 7 3 6 11 17 101 45 se afi✁eaz✂ 11 17 101
(6p.)
3. Se cite✁ te de la tastatur✂ un text format din cuvinte separate între ele prin câte un spa iu. Fiecare
cuvânt are cel mult 40 de caractere, doar litere mici ale alfabetului englez. Textul are cel mult 200 de
caractere. Scrie i programul C sau C++ care afi✁ eaz✂ pe ecran, pe linii separate, doar cuvintele din
textul citit care con in cel mult trei vocale. Se consider✂ vocale: a, e, i, o, u.
Exemplu. Dac✂ textul este:
pentru examenul de bacalaureat se folosesc tablouri
se afi✁ eaz✂ pe ecran:
pentru
de
se
folosesc (10p.)
INFORMATIC✄, limbajul C/C++ 2 Varianta 47