Sunteți pe pagina 1din 141

Ministerul Educaiei, Cercetrii i Inovrii

Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 001


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Utiliznd metoda backtracking se genereaz n ordine lexicografic cuvintele de cte patru
litere din mulimea A={a,b,c,d,e}, cuvinte care nu conin dou vocale alturate. Primele
opt cuvinte generate sunt, n ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe.
Cte dintre cuvintele generate ncep cu litera b i se termin cu litera e?
(4p.)
b. 15
c. 12
d. 20
a. 9

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

3.

4.

Pentru definiia de mai jos a subprogramului f, ce se afieaz ca urmare a apelului


f(121,1);?
(6p.)
//C

//C++

void f(long n, int i)


{ if(n!=0)
if(n%3>0)
{ printf("%d",i); f(n/3,i+1); }
}

void f(long n, int i)


{ if(n!=0)
if(n%3>0)
{ cout<<i; f(n/3,i+1); }
}

Fiierul text bac.txt conine, pe o singur linie, cel mult 1000 de numere naturale nenule
cu cel mult 4 cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un program
C/C++ care citete de la tastatur un numr natural nenul n (n999) i numerele din fiierul
bac.txt i care afieaz pe ecran, separate prin cte un spaiu, toate numerele din fiier
care sunt divizibile cu n. Dac fiierul nu conine niciun astfel de numr, atunci se va afia
pe ecran mesajul NU EXISTA.
Exemplu: dac fiierul bac.txt conine numerele: 3 100 40 70 25 5 80 6 3798,
pentru n=10 atunci pe ecran se va afia: 100 40 70 80
(10p.)
Subprogramul sub, cu trei parametri, primete prin intermediul parametrilor:
v un tablou unidimensional cu cel mult 100 de componente ce memoreaz numere
ntregi de cel mult 4 cifre fiecare;
n un numr natural nenul mai mic sau egal cu 100 ce reprezint numrul efectiv de
componente ale tabloului primit prin intermediul parametrului v;
a un numr ntreg cu cel mult 4 cifre.
Subprogramul sub returneaz numrul componentelor tabloului primit prin intermediul
parametrului v ale cror valori sunt strict mai mici dect valoarea parametrului a.
Exemplu: pentru valorile n=5, v=(1,21,9,21,403), a=20 ale parametrilor, n urma
apelului, subprogramului sub va returna valoarea 2.
a) Scriei definiia complet a subprogramului sub.

(4p.)

b) S se scrie un program C/C++ care s citeasc de la tastatur un numr natural nenul n


(n100) i n numere ntregi, fiecare avnd cel mult 4 cifre, i care, folosind apeluri utile ale
subprogramului sub, s afieze pe ecran mesajul DA dac oricare dou dintre cele n
numere ntregi citite sunt distincte dou cte dou, sau mesajul NU n caz contrar.
Exemplu: pentru n=6 i cele n numere citite de la tastatur: 47 183 69 8 134 -56
se va afia pe ecran mesajul DA
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 002


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Utiliznd metoda backtracking se genereaz n ordine lexicografic cuvintele de cte patru
litere din mulimea A={a,b,c,d,e}, cuvinte care nu conin dou vocale alturate. Primele
opt cuvinte generate sunt, n ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe.
Care este ultimul cuvnt generat?
(4p.)
a. edcb
b. eeee
c. edde
d. eded

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru definiia de mai jos a subprogramului f, ce se afieaz ca urmare a apelului


f(12345);?
(6p.)
//C++
//C
void f(long n)
void f(long n)
{ cout<<n%10;
{ printf("%d",n%10);
if(n!=0)
if(n!=0)
{ f(n/100); printf("%d",n%10); }
{ f(n/100); cout<<n%10;}
}
}

3. Fiierul text NR.TXT conine pe o singur linie, separate prin cte un spaiu, cel mult 100 de
numere ntregi, fiecare numr avnd cel mult 4 cifre. Scriei un program C/C++ care citete
numerele din fiierul NR.TXT i afieaz pe ecran, separate prin cte un spaiu, n ordine
cresctoare, toate numerele naturale nenule din fiier. Dac nu exist astfel de numere se
va afia pe ecran mesajul NU EXISTA.
Exemplu: dac fiierul NR.TXT conine numerele: -3 -10 0 7 -5 7 51 -800 6 3798,
atunci pe ecran se va afia: 6 7 7 51 3798
(10p.)
4. Un numr n se numete extraprim dac att el, ct i orice numr obinut prin permutarea
cifrelor lui n, sunt numere prime. De exemplu, numrul 113 este un numr extraprim
deoarece 113, 311, 131 sunt numere prime.
a) Scriei definiia complet a unui subprogram f, cu un parametru, subprogram care:
- primete prin intermediul parametrului a un numr natural cu cel mult 3 cifre (a>1)
- returneaz suma tuturor exponenilor din descompunerea n factori primi a valorii
parametrului a.
Exemplu: pentru a=90 subprogramul va returna valoarea 4, deoarece a=2*32*5 i
1+2+1=4.
(4p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n, 2n999 i,
folosind apeluri utile ale subprogramului f, verific dac n este un numr extraprim. n caz
afirmativ, programul afieaz pe ecran mesajul DA, n caz contrar afind mesajul NU. (6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 003


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Utiliznd metoda backtracking se genereaz n ordine lexicografic cuvintele de cte patru
litere din mulimea A={a,b,c,d,e}, cuvinte care nu conin dou vocale alturate. Primele
opt cuvinte generate sunt, n ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe.
Care este penultimul cuvnt generat?
(4p.)
a. edec
b. eded
c. edde
d. edcb

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.
Pentru
definiia
alturat
a void f (int x)
subprogramului f, ce se afieaz ca {
if(x>0)
urmare a apelului f(26);?
(6p.)
if(x%4==0)
{ cout<<x; | printf(%c,x);
f(x-1); }
else
{ f(x/3);
cout<<y; | printf(%c,y);
}
}
3.

Fiierului text NR.TXT conine pe o singur linie, separate prin cte un singur spaiu, cel
mult 100 de numere naturale, fiecare numr avnd cel mult 4 cifre. Scriei un program
C/C++ care citete toate numerele din fiierul NR.TXT i afieaz pe ecran, separate prin
cte un spaiu, n ordine cresctoare, toate numerele din fiier care au cel puin 3 cifre.
Dac fiierul nu conine astfel de numere se va afia pe ecran mesajul NU EXISTA. (10p.)

4.

Subprogramul cif, cu doi parametri, primete prin intermediul parametrului a un numr


natural cu cel mult 8 cifre i prin intermediul parametrului b o cifr; subprogramul returneaz
numrul de apariii ale cifrei b n scrierea numrului a.
Exemplu: pentru a=125854 i b=5, subprogramul va returna valoarea 2.
a) Scriei definiia complet a subprogramului cif.

(4p.)

b) Scriei un program C/C++ care citete de la tastatur un numr natural n cu exact 8 cifre
i care determin i afieaz pe ecran, folosind apeluri utile ale subprogramului cif, cel mai
mare numr palindrom ce poate fi obinut prin rearanjarea tuturor cifrelor numrului n. Dac
nu se poate obine un palindrom din toate cifrele numrului n, programul va afia pe ecran
numrul 0. Un numr natural este palindrom dac este egal cu numrul obinut prin scrierea
cifrelor sale n ordine invers.
Exemplu: dac n=21523531 atunci se va afia pe ecran numrul 53211235, iar dac
n=12272351 atunci se va afia pe ecran numrul 0.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 004


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking se genereaz n ordine lexicografic cuvintele de cte patru


litere din mulimea A={a,b,c,d,e}, cuvinte care nu conin dou vocale alturate. Primele
opt cuvinte generate sunt, n ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe.
Care este antepenultimul cuvnt generat?
(4p.)
b. eddb
c. edeb
d. edcb
a. edde

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.
Pentru definiia alturat a subprogramului f, void f (int n, int x)
ce se afieaz ca urmare a apelului { if(x>n)
cout<<0; | printf(%d,0);
f(15,2);?
(6p.)
else
if(x%4<=1) f(n,x+1);
else
{ f(n,x+3);
cout<<1; | printf(%d,1);
}
}
3.

Fiierul text NR.TXT conine pe o singur linie, separate prin cte un singur spaiu, cel mult
100 de numere naturale, fiecare numr avnd cel mult 4 cifre. Scriei un program C/C++
care citete numerele din fiierul NR.TXT i afieaz pe ecran, separate prin cte un spaiu,
n ordine descresctoare, toate numerele din fiier care au cel mult 2 cifre. Dac fiierul nu
conine astfel de numere se va afia pe ecran mesajul NU EXISTA.
(10p.)

4.

Subprogramul cif, cu doi parametri, primete prin intermediul parametrului a un numr


natural cu cel mult 8 cifre i prin intermediul parametrului b o cifr; subprogramul returneaz
numrul de apariii ale cifrei b n scrierea numrului a.
Exemplu: pentru a=125854 i b=5, subprogramul va returna valoarea 2.
a) Scriei definiia complet a subprogramului cif.

(4p.)

b) Scriei un program C/C++ care citete de la tastatur un numr natural n cu exact 8 cifre,
fiecare cifr fiind nenul, i care determin i afieaz pe ecran, folosind apeluri utile ale
subprogramului cif, cel mai mic numr palindrom ce poate fi obinut prin rearanjarea
tuturor cifrelor numrului n. Dac nu se poate obine un palindrom din toate cifrele numrului
n, programul va afia pe ecran numrul 0. Un numr natural este palindrom dac este egal
cu numrul obinut prin scrierea cifrelor sale n ordine invers.
Exemplu: dac n=21523531 atunci se va afia pe ecran numrul 12355321, iar dac
n=12272351 atunci se va afia pe ecran numrul 0.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 005


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Folosind modelul combinrilor se genereaz numerele naturale cu cte trei cifre distincte din
mulimea {1,2,3,7}, numere cu cifrele n ordine strict cresctoare, obinndu-se, n ordine:
123, 127, 137, 237. Dac se utilizeaz exact aceeai metod pentru a genera numerele
naturale cu patru cifre distincte din mulimea {1,2,3,4,5,6,7,8}, cte dintre numerele
generate au prima cifr 2 i ultima cifr 7?
(4p.)
a. 8
b. 3
c. 4
d. 6

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru subprogramul f definit mai jos, ce se afieaz ca urmare a apelului f(3,17)?(6p.)


//C++
//C
void f ( int a, int b)
void f ( int a, int b)
{ if(a<=b)
{ if(a<=b)
{ f(a+1,b-2); cout<<*;}
{f(a+1,b-2); printf(%c,*);}
else cout<<b;
else printf(%d,b);
}
}

3.

Scriei un program C/C++ care citete de la tastur un numr natural n cu cel mult 8 cifre
(n10) i care creeaz fiierul text NR.TXT ce conine numrul n i toate prefixele nenule
ale acestuia, pe o singur linie, separate prin cte un spaiu, n ordine descresctoare a
valorii lor.
Exemplu: pentru n=10305 fiierul NR.TXT va conine numerele:
10305 1030 103 10 1

4.

(10p.)

Subprogramul f, cu un parametru:
- primete prin intermediul parametrului a un numr natural cu cel mult 8 cifre (a>1)
- returneaz cel mai mic divizor prim al valorii parametrului a.
Exemplu: pentru valoarea 45 a parametrului a, subprogramul va returna valoarea 3
deoarece a=32*5, iar cel mai mic divizor prim al su este 3.
a) Scriei definiia complet a subprogramului f.

(4p.)

b) Scriei un program C/C++ care s citeasc de la tastatur un numr natural nenul n


(n100) i apoi un ir de n numere naturale de cel mult 8 cifre fiecare, toate numerele din
ir fiind strict mai mari dect 1. Folosind apeluri utile ale subprogramului f, programul va
determina i va afia pe ecran toate numerele prime din irul citit. Numerele determinate se
vor afia pe ecran, separate prin cte un spaiu, n ordine cresctoare a valorii lor. Dac nu
exist astfel de numere se va afia pe ecran mesajul NU EXISTA.
Exemplu: pentru n=7, irul: 1125, 2, 314, 101, 37, 225, 12 pe ecran se va afia:
2 37 101

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(6p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 006


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking sunt generate numerele de 3 cifre, avnd toate cifrele
distincte i cu proprietatea c cifrele aflate pe poziii consecutive sunt de paritate diferit.
tiind c primele ase soluii generate sunt, n aceast ordine, 103, 105, 107, 109, 123,
125, care este a zecea soluie generat?
(4p.)
145
147
230
149
a.
b.
c.
d.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.
int f(int a, int b){
Se consider subprogramul alturat:
if (b<1) return -1;
Ce valoare are f(15,2)? Dar f(128,2)?
else
(6p.)
if (a%b==0)
return 1+f(a/b,b);
else
return 0; }
3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (n100) i apoi
cele n elemente, numere naturale cu cel mult 4 cifre fiecare, ale unui tablou unidimensional
a. Programul afieaz pe o linie a ecranului suma celor n elemente ale tabloului, pe
urmtoarea linie a ecranului suma primelor n-1 elemente i aa mai departe, astfel nct
ultima linie afiat s conin doar primul element al tabloului.
15
Exemplu: dac n=4 iar tabloul are elementele
11
a=(1,7,3,4) programul va afia valorile
8
alturate:
(10p.)
1

4.

Se consider fiierul BAC.TXT ce conine un ir cresctor cu cel mult un milion de numere


naturale de cel mult nou cifre fiecare, separate prin cte un spaiu.
a) S se scrie un program C/C++ care, folosind un algoritm eficient din punct de vedere al
memoriei utilizate i al timpului de executare, citete din fiier toi termenii irului i afieaz
pe ecran, pe o singur linie, fiecare termen distinct al irului urmat de numrul de apariii ale
acestuia n ir. Valorile afiate sunt separate prin cte un spaiu.
Exemplu: dac fiierul BAC.TXT are urmtorul coninut:
1 1 1 5 5 5 5 9 9 11 20 20 20
programul va afia:
1 3 5 4 9 2 11 1 20 3
deoarece 1 apare de 3 ori, 5 apare de 4 ori, etc.

(6p.)

b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const


eficiena ei (3 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 007


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se consider subprogramul f definit


alturat. Ce se va afia n urma
apelului f(12345);?
(4p.)

a. 513

b. 24

void f(long int n)


{ if (n!=0)
{if (n%2 == 0)
cout<<n%10; | printf(%d,n%10);
f(n/10);
}
}
c. 42
d. 315

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Folosind tehnica bactracking un elev a scris un program care genereaz toate numerele de
cte n cifre (0<n9), cifrele fiind n ordine strict cresctoare. Dac n este egal cu 5, scriei
n ordine cresctoare toate numerele avnd cifra unitilor 6, care vor fi generate de
program.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (0<n100)i cele
3*n elemente ale tabloului unidimensional v, fiecare element fiind un numr natural cu cel
mult patru cifre fiecare. Tabloul este mprit n trei zone, cu cte n elemente: prima zon
conine primele n elemente din tablou, a doua zon conine urmtoarele n elemente din
tablou, restul elementelor fiind n zona a treia. Programul va interschimba primul element
par (dac exist) al zonei unu cu ultimul element impar (dac exist) al zonei trei i apoi va
scrie pe prima linie a fiierului text BAC.TXT toate elementele tabloului, separate prin cte
un spaiu. n cazul n care unul dintre aceste dou elemente, care urmeaz a fi
interschimbate, nu exist, programul nu va efectua nici o modificare asupra tabloului dat.
Exemplu: pentru n=3 i v=(1 2 3 4 5 6 7 8 9), fiierul BAC.TXT va conine:
1 9 3 4 5 6 7 8 2
(10p.)

4.

Se consider irul definit de relaia de


recuren alturat:
a) Scriei definiia complet a unui subprogram sub, care primete prin intermediul
singurului su parametru n un numr natural de maximum 8 cifre, i care returneaz cel
mai mare termen al irului f care este mai mic sau cel mult egal cu n.
Exemplu: dac n=83 atunci subprogramul va returna valoarea 80.

(4p.)

b) Scriei un program C/C++ care citete de la tastatur un numr natural s (s10000000)


i determin scrierea lui s ca sum de termeni distinci ai irului dat folosind apeluri utile ale
subprogramului sub. Numerele astfel determinate se vor scrie pe ecran, pe aceeai linie,
separate prin cte un spaiu.
i
Exemplu: dac valoarea citit de la tastatur este 63, se va afia:
40 20 3

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(6p.)ce const eficiena(4p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 008


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking sunt generate numerele de 3 cifre care au cifrele n ordine
cresctoare, iar cifrele aflate pe poziii consecutive sunt de paritate diferit. tiind c primele
cinci soluii generate sunt, n aceast ordine, 123, 125, 127, 129, 145, care este cel de al
8-lea numr generat?
(4p.)
169
149
167
147
a.
b.
c.
d.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


void f(int n)
{ if (n!=0)
{ if (n%2==0)
cout<<n<< ; | printf("%d ",n);
f(n-1);
cout<<n<< ; | printf("%d ",n);
}
else cout<<endl; | printf("\n");
}

2.

Se consider subprogramul f,
descris alturat. Ce se va afia
n urma apelului f(3);? (6p.)

3.

Pe prima linie a fiierului text BAC.TXT se afl o valoare natural n (1<n50), iar pe a doua
linie n numere naturale cu maximum 4 cifre fiecare, desprite prin cte un spaiu. n irul
numerelor de pe a doua linie a fiierului exist cel pzin dou numere ptrate perfecte.
Scriei un program C/C++ care citete toate numerele din fiier i afieaz pe ecran
expresia aritmetic reprezentnd suma numerelor de pe a doua linie a fiierului care au
proprietatea c sunt ptrate perfecte, cu simbolul + ntre ele i, dup un semn =, valoarea
acestei sume, ca n exemplu. Termenii sumei afiate se pot afla n orice ordine.
Exemplu: dac fiierul BAC.TXT are urmtorul coninut
5
9 5 36 9 8
atunci pe ecran se poate afia:
9+9+36=54 sau 9+36+9=54 sau 36+9+9=54
(10p.)

4.

Subprogramul sub primete prin intermediul parametrilor:


n i m dou numere naturale (1<n<100, 1<m<100)
a i b dou tablouri unidimensionale, fiecare avnd componente numere naturale de
maximum patru cifre, ordonate cresctor; tabloul a conine n numere, toate pare, iar
tabloul b conine m numere, toate impare.
Subprogramul va afia pe ecran, n ordine cresctoare, separate prin cte un spaiu, un ir
format dintr-un numr maxim de elemente care aparin cel puin unuia dintre tablouri, astfel
nct orice dou elemente aflate pe poziii consecutive s fie de paritate diferit.
Exemplu: pentru n=5, m=3 i tablourile a=(2,4,8,10,14) i b=(3,5,11), subprogramul
va afia 2 3 4 5 8 11 14 sau 2 3 4 5 10 11 14.
a) Scriei definiia complet a subprogramului sub, alegnd pentru rezolvare un algoritm
eficient din punctul de vedere al timpului de executare.
(6p.)
b) Descriei succint, n limbaj natural, algoritmul pe baza cruia a fost scris subprogramul de
la punctul a), explicnd n ce const eficiena metodei utilizate.
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 009


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se consider subprogramul f cu definiia int f (long n, int k){


if (n!=0)
alturat. Ce valoare are f(1213111,1)?
if(n%10==k)
(4p.)
return 1+f(n/10,k);
else return 0;
else return 0;}
5
3
2
b.
c.
d. 1
a.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Utiliznd metoda backtracking, sunt generate n ordine cresctoare toate numerele de 3


cifre, astfel nct cifrele sunt n ordine cresctoare, iar cifrele aflate pe poziii consecutive
sunt de paritate diferit. tiind c primele trei soluii generate sunt, n aceast ordine, 123,
125, 127, scriei toate numerele generate care au suma cifrelor egal cu 12.
(6p.)

3.

Scriei definiia complet a subprogramului sub cu doi parametri: n (numr natural,


0<n50) i k (numr natural, 0<k20). Subprogramul determin afiarea pe o linie nou a
ecranului, n ordine descresctoare, a primelor n numere naturale nenule divizibile cu k.
Numerele vor fi separate prin cte spaiu.
Exemplu: dac n=3 i k=5 la apelul subprogramului se va afia pe ecran:
15 10 5

4.

(10p.)

Se consider fiierul BAC.TXT ce conine cel mult un milion de numere naturale separate
prin spatii, fiecare numr avnd cel mult nou cifre.
a) Scriei un program C/C++ care citete toate numerele din fiierul BAC.TXT i determin,
folosind un algoritm eficient din punct de vedere timpului de executare, cele mai mari dou
numere de trei cifre care nu se afl n fiier. Cele dou numere vor fi afiate pe ecran n
ordine descresctoare, cu un spaiu ntre ele. Dac nu pot fi determinate dou astfel de
numere, programul va afia pe ecran valoarea 0.
Exemplu: dac fiierul BAC.TXT conine numerele:
12 2345 123 67 989 6 999 123 67 989 999
atunci programul va afia
998 997
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 010


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se consider subprogramul cu definiia


alturat. Ce valoare are f(3,1)?
(4p.)

a. 9

b. 6

int f(int n,int y)


{ if(n!=0)
{ y=y+1;
return y+f(n-1,y);
}
else return 0;
}
c. 7
d. 8

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Un elev a scris un program care, folosind metoda backtracking, genereaz toate numerele
de cte 5 cifre, cifrele fiind n ordine strict cresctoare. Scriei toate numerele generate de
program care au prima cifr 5.
(6p.)

3.

Scriei definiia complet a subprogramului sub cu trei parametri: n (numr natural,


5<n30000), a i b; subprogramul furnizeaz prin intermediul parametrilor a i b cele mai
mari dou numere prime distincte mai mici dect n.
Exemplu: dac n= 28 la apelul subprogramului se va furniza prin parametrul a valoarea
23 i prin parametrul b valoarea 19.
(10p.)

4.

Evidena produselor vndute de o societate comercial este pstrat n fiierul


PRODUSE.TXT. Pentru fiecare vnzare se cunosc: tipul produsului (un numr natural de cel
mult 4 cifre), cantitatea vndut exprimat in kilograme (un numr natural mai mic sau egal
cu 100) i preul unui kilogram (un numr natural mai mic sau egal cu 100).
Fiierul PRODUSE.TXT are cel mult 200000 de linii i fiecare linie conine trei numere
naturale, separate prin cte un spaiu, ce reprezint, n aceast ordine tipul, cantitatea i
preul de vnzare al unui produs la momentul vnzrii respective.
a) S se scrie un program C/C++ care, utiliznd un algoritm eficient din punct de vedere al
timpului de executare, determin pentru fiecare tip de produs vndut suma total obinut
n urma vnzrilor. Programul va afia pe cte o linie a ecranului tipul produsului i suma
total obinut, separate prin cte un spaiu, ca n exemplu.
3 1 5
Exemplu: dac fiierul PRODUSE.TXT are coninutul alturat, programul va afia
perechile urmtoare, nu neaprat n aceast ordine:
1 20 5
1 150
2 10 3
2 30
1 10 5
3 5
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena (3 - 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 011


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Un algoritm de tip backtracking genereaz, n ordine lexicografic, toate irurile de 5 cifre 0
i 1 cu proprietatea c nu exist mai mult de dou cifre 0 pe poziii consecutive. Primele 7
soluii generate sunt: 00100, 00101, 00110, 00111, 01001, 01010, 01011. Care este a
8-a soluie generat de acest algoritm?
(4p.)
01110
01100
01011
01101
a.
b.
c.
d.

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru funcia f definit alturat, stabilii care int f(int n){


este valoarea f(5). Dar f(23159)? (6p.) int c;

if (n==0) return 9;
else
{c=f(n/10);
if (n%10<c) return n%10;
else return c;
}
}

3.

Fiierul text numere.txt conine pe prima linie un numr natural n (n<30000), iar pe a
doua linie n numere ntregi avnd maximum 4 cifre fiecare. Se cere s se afieze pe ecran
un ir de n numere ntregi, cu proprietatea c valoarea termenului de pe poziia i
(i=1,2,,n) din acest ir este egal cu cea mai mare dintre primele i valori de pe a doua
linie a fiierului numere.txt.
a) Descriei pe scurt un algoritm de rezolvare, eficient din punct de vedere al timpului de
executare i al spaiului de memorie utilizat, explicnd n ce const eficiena sa.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)
Exemplu: dac fiierul numere.txt are coninutul 12
4 6 3 7 8 1 6 2 7 9 10 8
alturat, se afieaz pe ecran numerele
4 6 6 7 8 8 8 8 8 9 10 10

4.

a) Scriei doar antetul funciei sum care primete ca parametru un numr natural nenul x cu
maximum 9 cifre i returneaz suma divizorilor numrului x.
Exemplu: sum(6) are valoarea 12 (=1+2+3+6).

(3p.)

b) S se scrie un program C/C++ care citete de la tastatur un numr natural n (0<n<25) i


apoi n numere naturale nenule cu maximum 9 cifre fiecare. Programul calculeaz, folosind
apeluri ale funciei sum, i afieaz pe ecran cte numere prime conine irul citit.
Exemplu: pentru n=5 i valorile 12 3 9 7 1 se va afia pe ecran valoarea 2 (n irul dat
exist dou numere prime i anume 3 i 7).
(7p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 012


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Se consider subprogramul P, definit alturat. void P(int &x)
tiind c valoarea variabilei ntregi a este nainte {
x=x+5;
de apel 4, care este valoarea ei imediat dup
}
apelul P(a)?
(4p.)
10
4
b.
c. 9
d. 5
a.

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru a scrie valoarea 10 ca sum de numere prime se folosete metoda backtracking i


se genereaz, n aceast ordine, sumele distincte: 2+2+2+2+2, 2+2+3+3, 2+3+5, 3+7,
5+5. Folosind exact aceeai metod, se scrie valoarea 9 ca sum de numere prime. Care
sunt primele trei soluii, n ordinea generrii lor?
(6p.)

3.

Fiierele text NR1.TXT i NR2.TXT conin, separate prin cte un spaiu, mai multe numere
ntregi de cel mult 9 cifre fiecare. Fiecare dintre fiiere conine cel mult 100 de valori i
numerele din fiecare fiier sunt ordonate strict cresctor. Se cere s se afieze pe ecran, n
ordine cresctoare, numerele divizibile cu 5 care se gsesc doar n unul din cele dou
fiiere.
Exemplu: dac fiierul NR1.TXT conine numerele 1 2 3 4 7 20 60, iar fiierul
NR2.TXT conine numerele 3 5 7 8 9 10 12 20 24, atunci se vor afia pe ecran
valorile 5 10 60.
a) Descriei un algoritm de rezolvare a acestei probleme, eficient din punct de vedere al
timpului de executare i al spaiului de memorie utilizat, explicnd n ce const eficiena
acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.

4.

(6p.)

Scriei un program C/C++ care citete de la tastatur o valoare natural nenul n (n20),
apoi un ir de n numere naturale, avnd fiecare exact 5 cifre. Dintre cele n numere citite,
programul determin pe acelea care au toate cifrele egale i le afieaz pe ecran, n ordine
cresctoare, separate prin cte un spaiu.
Exemplu: pentru n=5 i numerele 11111 33333 12423 59824 11111 33443 se va
afia: 11111 11111 33333.
(10p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 013


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Fie subprogramul fct definit alturat, parial. Iniial, variabile ntregi void fct(....)
a, b i c au valorile a=8, b=31 i c=9, iar dup apelul fct(a,b,c), { x=x+1;
y=y-1;
valorile celor trei variabile sunt a=9, b=31 i c=39. Care poate fi
z=x+y;
antetul subprogramului fct?
(4p.)
}
b. void fct(int x,int &y,int &z)
a. void fct(int &x,int &y,int &z)
c. void fct(int x,int y,int z)
d. void fct(int &x,int y,int &z)

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Trei biei, Alin, Bogdan i Ciprian, i trei fete, Delia, Elena i Felicia, trebuie s
formeze o echip de 3 copii, care s participe la un concurs. Echipa trebuie s fie mixt
(adic s conin cel puin o fat i cel puin un biat). Ordinea copiilor n echip este
important deoarece aceasta va fi ordinea de intrare a copiilor n concurs (de exemplu
echipa Alin, Bogdan, Delia este diferit de echipa Bogdan, Alin, Delia).
Cte echipe se pot forma, astfel nct din ele s fac parte simultan Alin i Bogdan?
Dai exemplu de o echip corect format din care s nu fac parte nici Alin i nici
Bogdan.
(6p.)

3.

Se consider irul 1, 2,1, 3,2,1, 4,3,2,1, ...


construit astfel: prima grup este format din numrul 1, a doua grup este format din
numerele 2 i 1, iar grupa a k-a, este format din numerele k, k-1,..., 1.
Se cere s se citesc de la tastatur un numr natural n (n1000) i s se afieze pe ecran
cel de al n-lea termen al irului dat.
a) Descriei un algoritm de rezolvare a acestei probleme, eficient din punct de vedere al
timpului de executare i al spaiului de memorie, explicnd n ce const eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris
(6p.)

4.

Se consider subprogramul P care are doi parametri:


n, prin intermediul cruia primete un numr natural de cel mult 9 cifre
c, prin intermediul cruia primete o cifr.
Subprogramul va furniza tot prin intermediul parametrului n numrul obinut din n prin
eliminarea tuturor apriiilor cifrei c. Dac, dup eliminare, numrul nu mai conine nicio cifr
sau conine doar cifre 0, rezultatul returnat va fi 0.
a) Scriei doar antetul subprogramului P.

(2p.)

b) Pe prima linie a fiierului text BAC.IN se gsesc, separate prin cte un spaiu, mai multe
numere naturale de cel mult 9 cifre fiecare. Scriei programul C/C++ care citete numerele
din acest fiier, utiliznd apeluri ale subprogramului P elimin toate cifrele impare din fiecare
dintre aceste numere i apoi scrie n fiierul text BAC.OUT numerele astfel obinute,
separate prin cte un spaiu. Dac un numr din fiierul BAC.IN nu conine nicio cifr par
nenul, acesta nu va mai aprea deloc n fiierul de ieire.
(8p.)
Exemplu: dac fiierul BAC.IN conine numerele 25 7 38 1030 45127 0 35 60 15,
atunci BAC.OUT va avea coninutul: 2 8 42 60.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 014


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking se genereaz permutrile cuvntului info. Dac primele trei
soluii generate sunt: fino, fion, fnio care este cea de-a cincea soluie?
(4p.)
a. foin
b. fnoi
c. foni
d. ifon

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru funciile f1 i f2 definite long f1(int c)


alturat, stabilii care este valoarea lui { if (c%2==1) return 1;
else return 2;
f1(3). Dar f2(41382)?
(6p.)
}

long f2(long n)
{ if (n==0) return 0;
else return f1(n%10)+f2(n/10);
}

3.

Se citete de la tastatur un numr natural n (n500) i apoi n cifre separate prin spaii. Se
cere s se afieze pe ecran cele n cifre citite, n ordine cresctoare, separate prin cte un
spaiu.
Exemplu: pentru n=19 i cifrele 3 3 0 9 2 1 2 1 3 7 1 5 2 7 1 0 3 2 3 se va
afia pe ecran 0 0 1 1 1 1 2 2 2 2 3 3 3 3 3 5 7 7 9.
a) Descriei pe scurt un algoritm de rezolvare al problemei, eficient din punct de vedere al
spaiului de memorie utilizat i al timpului de executare, explicnd n ce const eficiena
metodei alese.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.

4.

(6p.)

Fiierul text BAC.TXT conine mai multe numere naturale, cu cel mult 6 cifre fiecare, cte
un numr pe fiecare linie a fiierului.
11
Scriei un program C/C++ care citete toate numerele din fiierul BAC.TXT i le
21
afieaz pe ecran, n aceeai ordine, cte cinci pe fiecare linie, separate prin cte
30
un spaiu, cu excepia ultimei linii care poate conine mai puin de cinci numere.
40
Programul va afia apoi pe ecran, pe o linie separat, cte numere din fiier au
51
suma cifrelor par.
16
Exemplu: dac fiierul are coninutul alturat, pe ecran se vor afia numerele
17
de mai jos:
10
11 21 30 40 51
1
16 17 10 1
4
(10p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 015


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Cte numere cu exact dou cifre pot fi construite folosind doar cifre pare distincte?
b. 16
c. 20
d. 25
a. 12

(4p.)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru funciile f i g definite mai jos, scriei care este rezultatul returnat la apelul g(11).
Dar rezultatul returnat la apelul f(6)?
(6p.)
long g(long x)
{ if (x>9)

return (x/10 + x%10);


else
return x;
}

long f(int c)
{ if (c<1)
return 1;
else
return g(c+f(c-1));
}

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (n32000) i


afieaz pe ecran numrul natural din intervalul nchis [1,n] care are cei mai muli divizori.
Dac exist mai multe numere cu aceast proprietate se va afia cel mai mic dintre ele.
Exemplu: pentru n=20 se va afia valoarea 12 (12, 18 i 20 au cte 6 divizori, iar 12 este
cel mai mic dintre ele).
(10p.)

4.

n fiierul text BAC.IN se gsesc, pe o singur linie, separate prin cte un spaiu, mai multe
numere naturale de cel mult 6 cifre fiecare. Se cere s se determine i s se afieze pe
ecran, separate printr-un spaiu, ultimele dou numere impare (nu neaprat distincte) din
fiierul BAC.IN. Dac n fiier se gsete un singur numr impar sau niciun numr impar se
va scrie pe ecran mesajul Numere insuficiente.
Exemplu: dac fiierul BAC.IN conine valorile: 12 15 68 13 17 90 31 42 se va
afia 17 31.
a) Descriei n limbaj natural un algoritm eficient din punct de vedere al spaiului de memorie
i al timpului de executare, pentru rezolvarea acestei probleme, explicnd n ce const
eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(6p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 016


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Funcia F are definiia alturat. Ce valoare int F(int n)
{if(n==0 || n==1) return 1;
are F(3)?
(4p.)
else
return 2*F(n-1)+2*F(n-2);}
b. 12
c. 6
d. 10
a. 1

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare


2.

Un algoritm genereaz n ordine cresctoare toate numerele de n cifre, folosind doar cifrele
3, 5 i 7. Dac pentru n=5, primele cinci soluii generate sunt 33333, 33335, 33337,
33353, 33355, precizai care sunt ultimele trei soluii generate, n ordinea generrii.(6p.)

3.

Scriei definiia complet a subprogramului multiplu care are 3 parametri: a, prin care
primete un tablou unidimensional cu maximum 100 de numere naturale mai mici dect
1000, n, numrul efectiv de elemente ale tabloului i k, un numr natural (k9).
Subprogramul returneaz numrul de elemente din tablou care sunt multipli ai numrului k
i au ultima cifr egal cu k.
Exemplu: dac n=6, a=(9,273,63,83,93,123), iar k=3, subprogramul va returna
valoarea 4.
(10p.)

4.

n fiierul numere.txt sunt memorate maximum 10000 de numere naturale cu cel mult 9
cifre fiecare. Fiecare linie a fiierului conine cte un numr. Se cere afiarea pe ecran, n
ordine descresctoare, a tuturor cifrelor care apar n numerele din fiier. Alegei un algoritm
de rezolvare eficient din punct de vedere al timpului de executare.
Exemplu: dac fiierul numere.txt conine:
267
39628
79
se va tipri 9987766322.
a) Descriei succint, n limbaj natural, strategia de rezolvare i justificai eficiena algoritmului
ales.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(6p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 017


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Subprogramul f are definiia void f(long n)
{if (n>9)
alturat. Ce se va afia n urma
{cout<<n/100; | printf(%d,n/100);
apelului f(12345);?
f(n/10);
(4p.)
}
}
b. 123121
c. 1234123121
d. 123
a. 1231210

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare


2.

Un algoritm genereaz n ordine descresctoare toate numerele de 5 cifre, fiecare dintre ele
avnd cifrele n ordine strict cresctoare. tiind c primele cinci soluii generate sunt 56789,
46789, 45789, 45689, 45679, precizai care sunt ultimele trei soluii generate, n ordinea
generrii.
(6p.)

3.

Scriei definiia complet a subprogramului interval care are doi parametri a i n, prin
care primete un tablou unidimensional cu maximum 100 de numere naturale mai mici
dect 1000 i respectiv numrul efectiv de elemente din tabloul unidimensional.
Subprogramul returneaz numrul de elemente din tabloul unidimensional care aparin
intervalului nchis determinat de primul i respectiv ultimul element al tabloului.
Exemplu: dac tabloul are 6 elemente i este de forma (12,27,6,8,9,2), subprogramul
va returna valoarea 5.
(10p.)

4.

n fiierul numere.txt pe prima linie este memorat un numr natural n (n10000), iar pe
linia urmtoare un ir de n numere naturale distincte dou cte dou, separate prin cte un
spaiu, cu maximum 4 cifre fiecare. Se cere afiarea pe ecran a poziiei pe care s-ar gsi
primul element din irul aflat pe linia a doua a fiierului, n cazul n care irul ar fi ordonat
cresctor. Numerotarea poziiilor elementelor n cadrul irului este de la 1 la n. Alegei un
algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de
executare.
Exemplu: dac fiierul numere.txt conine:
6
267 13 45 628 7 79
se va afia 5, deoarece primul element din irul iniial, 267, s-ar gsi pe poziia a cincea n
irul ordonat cresctor (7 13 45 79 267 628).
a) Descriei succint, n limbaj natural, strategia de rezolvare i justificai eficiena algoritmului
ales.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(6p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 018


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Funcia f are definiia alturat. Ce se void f(long n, int i)
{if (i<n%10)
va
afia
n
urma
apelului
{cout<<n%10; | printf(%d,n%10);
f(12345,0);?
(4p.)
f(n/10,i+1);
}
}
b. 543
c. 54
d. 5432
a. 54321

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare


2.

Un algoritm genereaz, n ordine lexicografic, toate irurile alctuite din cte n cifre binare
(0 i 1). tiind c pentru n=5, primele patru soluii generate sunt 00000, 00001, 00010,
00011, precizai care sunt ultimele trei soluii generate, n ordinea obinerii lor.
(6p.)

3.

Scriei definiia complet a subprogramului count care are doi parametri, a i n, prin care
primete un tablou unidimensional cu maximum 100 de numere reale i respectiv numrul
efectiv de elemente din tablou. Subprogramul returneaz numrul de elemente din tabloul a
care sunt mai mari sau cel puin egale cu media aritmetic a tuturor elementelor din tablou.
Exemplu: dac tabloul are 6 elemente i este de forma (12, 7.5, 6.5, 3, 8.5, 7.5),
subprogramul va returna valoarea 4 (deoarece media tuturor elementelor este 7.5 i
numerele subliniate sunt cel puin egale cu aceast medie).
(10p.)

4.

n fiierul numere.txt este memorat un ir de maximum 10000 numere naturale, distincte


dou cte dou, cu maximum 4 cifre fiecare, separate prin cte un spaiu. Pentru un numr
k citit de la tastatur, se cere afiarea pe ecran a poziiei pe care se va gsi acesta n irul
de numere din fiier, dac irul ar fi ordonat descresctor, sau mesajul nu exist, dac
numrul k nu se afl printre numerele din fiier. Alegei un algoritm eficient de rezolvare din
punct de vedere al memoriei utilizate i al timpului de executare.
Exemplu: dac fiierul numere.txt conine numerele 26 2 5 30 13 45 62 7 79, iar
k are valoarea 13, se va afia 6 deoarece 13 s-ar gsi pe poziia a asea n irul
ordonat descresctor (79 62 45 30 26 13 7 5 2).
a) Descriei succint, n limbaj natural, strategia de rezolvare i justificai eficiena algoritmului
ales.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(6p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 019


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
int F(int x){
1.
Funcia F are definiia alturat. Ce valoare
if (x<=1) return x;
are F(18)?
(4p.)
else return x+F(x-2);
}
b. 171
c. 91
d. 18
a. 90
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare
2.

Un algoritm genereaz n ordine cresctoare, toate numerele de n cifre (n<9), cu cifre


distincte, care nu au dou cifre pare alturate. Dac pentru n=5, primele cinci soluii
generate sunt 10325, 10327, 10329, 10345, 10347, precizai care sunt urmtoarele trei
soluii generate, n ordinea obinerii lor.
(6p.)

3.

Subprogramul aranjare are doi parametri: a prin care primete un tablou unidimensional
cu maximum 100 de numere reale nenule i n, numrul de elemente din tablou.
Subprogramul rearanjeaz elementele tabloului unidimensional astfel nct toate valorile
negative s se afle pe primele poziii, iar valorile pozitive n continuarea celor negative.
Ordinea n cadrul secvenei de elemente pozitive, respectiv n cadrul secvenei de elemente
negative, poate fi oricare. Tabloul modificat va fi furnizat tot prin intermediul parametrului a.
Exemplu: dac tabloul are 6 elemente i este de forma (12, -7.5, 6.5, -3, -8,
7.5), dup apel, acesta ar putea fi: (-7.5, -3, -8, 12, 6.5, 7.5).
Scriei definiia complet a subprogramului aranjare.
(10p.)

4.

n fiierul nr1.txt este memorat pe prima linie o valoare natural n de cel mult 8 cifre,
iar pe linia urmtoare sunt memorate n numere naturale, cu maximum 4 cifre fiecare,
ordonate strict cresctor i separate prin cte un spaiu. n fiierul nr2.txt este memorat
pe prima linie o valoare natural m de cel mult 8 cifre, iar pe linia urmtoare sunt memorate
m numere naturale, cu maximum 4 cifre fiecare, ordonate strict cresctor i separate prin
cte un spaiu. Se cere afiarea pe ecran, separate prin cte un spaiu, n ordine strict
cresctoare, a tuturor numerelor aflate pe a doua linie n cel puin unul dintre cele dou
fiiere. n cazul n care un numr apare n ambele fiiere, el va fi afiat o singur dat.
Alegei un algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al
timpului de executare.
Exemplu: pentru urmtoarele fiiere:
nr1.txt
nr2.txt
5
6
3 6 8 9 12
2 3 5 7 9 13
se va afia 2 3 5 6 7 8 9 12 13.
a) Descriei succint, n limbaj natural, strategia de rezolvare i justificai eficiena algoritmului
ales.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(6p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 020


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Funcia F are definiia alturat. Ce valoare int F(int x)
{if(x!=0) return x+F(x-1);
are F(5)?
(4p.)
else
return x;
}
b. 10
c. 15
d. 6
a. 5

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare


2.

Un algoritm genereaz n ordine descresctoare, toate numerele de n cifre (n<9), cu cifrele


n ordine strict cresctoare, care nu au dou cifre pare alturate. Dac pentru n=5, primele
cinci soluii generate sunt 56789, 45789, 45679, 45678, 36789, precizai care sunt
urmtoarele trei soluii generate, n ordinea obinerii lor.
(6p.)

3.

Subprogramul nule are doi parametri: a, prin care primete un tablou unidimensional cu
maximum 100 de numere ntregi, cu cel mult 4 cifre fiecare i n, numrul de elemente din
tablou. Subprogramul rearanjeaz elementele tabloului unidimensional astfel nct toate
valorile nule s se afle la sfritul tabloului. Ordinea n cadrul secvenei de elemente nenule
poate fi oricare. Tabloul modificat este furnizat tot prin parametrul a.
Exemplu: dac n=6, a=(12,0,0,-3,-8,0), dup apel, acesta ar putea fi:
a=(12,-3,-8,0,0,0).
Scriei definiia complet a subprogramului nule.
(10p.)

4.

n fiierul nr1.txt este memorat pe prima linie o valoare natural n de cel mult 8 cifre,
iar pe linia urmtoare sunt memorate n numere naturale, cu maximum 4 cifre fiecare,
ordonate strict cresctor i separate prin cte un spaiu. n fiierul nr2.txt este memorat
pe prima linie o valoare natural m de cel mult 8 cifre, iar pe linia urmtoare sunt memorate
m numere naturale, cu maximum 4 cifre fiecare, ordonate strict cresctor i separate prin
cte un spaiu. Se cere afiarea pe ecran, separate prin cte un spaiu, n ordine strict
cresctoare, a tuturor numerelor aflate pe a doua linie att n primul ct i n al doilea fiier.
Alegei un algoritm de rezolvare eficient din punct de vedere al memoriei utilizate i al
timpului de executare.
Exemplu: pentru urmtoarele fiiere:
nr1.txt
nr2.txt
5
6
3 6 8 9 12
2 3 5 7 9 13
se va afia 3 9.
a) Descriei succint, n limbaj natural, strategia de rezolvare i justificai eficiena algoritmului
ales.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului ales.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(6p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 021


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Urmtoarele probleme se refer la mulimea de numere reale M={x1, x2, , xn}


(1000<n10000). Care dintre acestea, comparativ cu celelalte, admite un algoritm care se
ncheie dup un numr minim de pai?
(4p.)

a. sortarea elementelor mulimii M


c. determinarea
mulimii M

elementului

elementelor
b. generarea
cartezian M x M
minim

al

produsului

d. generarea tuturor permutrilor mulimii M

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


int f(int n)
2. Se consider subprogramul, f, definit
{ if(n==0) return 0;
alturat.
else return n%2+f(n/2);
Ce valoare are f(100)?
}
Scriei o valoare pentru x astfel nct
f(x)=1
(6p.)
3.

Scriei definiia complet a unui subprogram i_prim care primete prin singurul su
parametru, n, un numr natural din intervalul [2,30000] i returneaz diferena minim
p2-p1 n care p1 i p2 sunt numere prime i p1np2.
Exemplu: dac n=20 atunci i_prim(n)=4, valoare obinut pentru p1=19 i p2=23.
(10p.)

4.

Fiierul text BAC.TXT conine pe prima linie dou numere naturale n i k separate de un
spaiu (3n10000, 2kn/2), iar pe a doua linie un ir de n numere naturale x1, x2, ...,
xn separate prin cte un spaiu, fiecare numr din acest ir avnd cel mult patru cifre.
a) Scriei un program C/C++ care citete numerele din fiier i determin, utiliznd o
metod eficient din punct de vedere al timpului de executare, cel mai mic indice i (1ink+1) pentru care media aritmetic a numerelor xi, xi+1, ..., xi+k-1 este maxim. Programul
afieaz valoarea lui i pe ecran.
8 3
Exemplu: pentru fiierul alturat se afieaz 2, deoarece media
maxim se obine pentru 9, 4, 7.
(6p.) 2 9 4 7 5 2 9 9
b) Explicai succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia.
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 022


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

In timpul procesului de generare a permutrilor mulimii {1,2,,n} prin metoda


backtracking, n tabloul unidimensional x este plasat un element xk (1kn). Acesta este
considerat valid dac este ndeplinit condiia:
(6p.)

a. xk{x1, x2, , xk-1}

b. xkxk-1

c. xk{x1, x2, , xn}

d. xkxk-1 i xkxk+1

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


void f(char c)
2. Considerm subprogramul recursiv definit
{ if (c>A) f(c-1);
alturat. Ce se va afia n urma apelului de
cout<<c; | printf(%c,c);
mai jos?
if (c>A) f(c-1);
}
f(C);
(4p.)
3.

a) Scriei definiia complet a unui subprogram, nz, cu un parametru ntreg n (0<n32000),


care returneaz numrul zerourilor de la sfritul numrului n!.
(6p.)
b) Scriei programul C/C++ care citete de la tastatur un numr natural k (0<k3) i
determin, folosind apeluri ale subprogramului nz, cel mai mic numr natural n pentru care
n! are cel puin k zerouri la sfrit. Numrul determinat se afieaz pe ecran.
(4p.)

4.

Scriei programul C/C++ care citete din fiierul text BAC.TXT numrul ntreg n
(1n10000) i un ir de n perechi de numere ntregi a b (1ab32000), fiecare pereche
fiind scris pe o linie nou a fiierului, cu un spaiu ntre cele dou numere. Programul
afieaz pe ecran pentru fiecare pereche a,b cel mai mare numr natural din intervalul
nchis [a,b]care este o putere a lui 2 sau numrul 0 dac nu exist nicio putere a lui 2 n
intervalul respectiv. Numerele afiate pe ecran se scriu n linie, separate prin cte un spaiu.
Un numr p este putere a lui 2 dac exist un numr natural k astfel nct p=2k.
Exemplu: dac fiierul BAC.TXT conine numerele
3
2 69
10 20
19 25
se va afia: 64 16 0.
(10p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 023


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Algoritmul de generare a tuturor numerelor de 5 cifre nenule, fiecare avnd cifrele ordonate
strict cresctor, este echivalent cu algoritmul de generare a:
(6p.)

a. submulimilor unei mulimi cu 5 elemente

b. produsului cartezian a unor mulimi de


cifre

c. aranjamentelor de 9 elemente luate cte 5

d. combinrilor de 9 elemente luate cte 5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


int suma (int a,int b)
2. Pentru subprogramul suma definit { if (a==0 && b==0) return 0;
alturat, scriei valoarea expresiei
else if (a==0) return 1+suma(a,b-1);
suma(5,4).
(4p.)
else return 1+suma(a-1,b);
}
3.

a) Scriei definiia complet a subprogramului shift care primete prin intermediul


parametrului n o valoare natural nenul (n100), iar prin intermediul parametrului x, un
tablou unidimensional cu maximum 100 de componente. Fiecare component a acestui
tablou este un numr ntreg care are cel mult 4 cifre. Subprogramul permut circular cu o
poziie spre stnga primele n elemente ale tabloului x i furnizeaz tabloul modificat tot prin
parametrul x.
Exemplu: dac nainte de apel n=4 i x=(1,2,3,4), dup apel x=(2,3,4,1).
(4p.)
b) Scriei un program C/C++ care citete de la tastatur o valoare natural nenul n
(n100), apoi cele n elemente ale unui tablou unidimensional x. Programul va inversa
ordinea elementelor tabloului x folosind apeluri utile ale subprogramului shift i va afia
pe ecran, separate prin cte un spaiu, elementele tabloului rezultat n urma acestei
prelucrri.
Exemplu: dac se citesc pentru n valoarea 5, iar tabloul x este (1,2,3,4,5) programul
va determina ca x s devin (5,4,3,2,1).
(6p.)

4.

Fiierul text BAC.TXT conine pe prima linie un numr natural nenul n (1n1000), iar pe
fiecare dintre urmtoarele n linii, cte dou numere ntregi a i b (1ab32000), fiecare
pereche reprezentnd un interval nchis de forma [a,b]. Scriei un program C/C++ care
determin intervalele care au proprietatea c intersecia cu oricare dintre celelalte n-1
intervale este vid i afieaz pe cte o linie a ecranului, separate printr-un spaiu,
numerele care reprezint capetele intervalelor determinate. Dac nu exist nici un astfel de
interval, se afieay pe ecran mesajul NU EXISTA.
(10p.)
4
Exemplu: dac fiierul BAC.TXT are coninutul alturat, pe ecran se va afia:
17 20
2 6
sau
17 20
2 6
17 20
2 6
10 15
8 16

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 024


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Genernd irurile de maximum 3 caractere distincte din mulimea {A,B,C,D,E}, ordonate


lexicografic, obinem succesiv: A, AB, ABC, ABD, ... . Ce ir va fi generat imediat dup
BAE?
(4p.)

a. BCA

b. CAB

c. BC

d. BEA

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

3.

Funcia f are definiia alturat.


a) Ce valoarea are f(17)?
b) Ce valoare are f(22)?

(3p.)
(3p.)

int f(int n)
{if (n<=9) return 0;
if (n%4==0) return 0;
return 1+f(n-3);
}

a) Scriei definiia complet a subprogramului p care primete prin intermediul parametrului


n un numr natural nenul (n100), iar prin intermediul parametrului x un tablou
unidimensional cu n componente ntregi, de maximum patru cifre fiecare. Subprogramul
furnizeaz prin intermediul parametrului mini valoarea minim din tabloul x, prin
intermediul parametrului maxi valoarea maxim din x, iar prin intermediul parametrului sum
suma elementelor din tabloul x.
(6p.)
b) Scriei un program C/C++ care citete de la tastatur o valoare natural nenul n,
(3n100), apoi cele n elemente distincte ale unui tablou unidimensional x. Fiecare dintre
aceste elemente este un numr natural avnd cel mult patru cifre. Folosind apeluri utile ale
subprogramului p, programul calculeaz i afieaz pe ecran media aritmetic a
elementelor care ar rmne n tabloul x dac s-ar elimina valoarea minim i valoarea
maxim din tablou. Valoarea afiat va avea cel mult 3 cifre dup virgul.
Exemplu: dac se citesc pentru n valoarea 5, iar pentru tabloul x valorile (1,9,4,8,5),
programul va afia una dintre valorile 5.667 sau 5.666.
(4p.)

4.

Fiierul text bac.txt conine pe prima linie numrul natural n, 1n30000, pe urmtoarele
n linii un ir de n numere ntregi, ordonate cresctor, iar pe ultima linie dou numere ntregi
a i b (ab) separate de un spaiu. Fiecare dintre cele n numere, precum i valorile a i b,
au cel mult patru cifre.
a) Scriei un program C/C++, eficient din punct de vedere al timpului de executare, care
afieaz pe ecran cel mai mic numr ntreg din intervalul nchis [a,b] care se gsete n
irul dat. Dac nu exist un astfel de numr, programul afieaz textul NU.
4
Exemplu: dac fiierul bac.txt are coninutul alturat, programul afieaz
-2
valoarea 11
(6p.)
7
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena
11
ei.
(4p.)
35
8 15

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 025


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Un program citete o valoare natural nenul impar pentru n i apoi genereaz i afieaz
n ordine cresctoare lexicografic toate combinaiile formate din n cifre care ndeplinesc
urmtoarele proprieti:
- ncep i se termin cu 0;
- modulul diferenei ntre oricare dou cifre alturate dintr-o combinaie este 1.
Astfel, pentru n=5, combinaiile afiate sunt, n ordine, urmtoarele: 01010, 01210. Dac
se ruleaz acest program i se citete pentru n valoarea 7, imediat dup combinaia
0101210 va fi afiat combinaia:
(4p.)

a. 0121210

b. 0123210

c. 0111210

d. 0121010

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


int f(int n)
2. Funcia f are definiia alturat:
{ if (n<=0) return -1;
a) Ce valoare are f(16)?
(3p.)
if (n%2==0) return 0;
if
(n%3==0) return 0;
b) Scriei cea mai mare valoare de dou cifre pe care o
return
1+f(n-10);
poate avea n astfel nct f(n) s fie egal cu 2. (3p.)
}
3.

Subprogramul f primete prin intermediul parametrului n un numr natural nenul (1n9),


iar prin intermediul parametrului a, un tablou unidimensional care conine n valori naturale,
fiecare dintre acestea reprezentnd cte o cifr a unui numr. Astfel, a0 reprezint cifra
unitilor numrului, a1 cifra zecilor etc.
Subprogramul furnizeaz prin parametrul k o valoare natural egal cu numrul obinut din
cifrele pare reinute n tabloul a sau valoarea -1 dac n tablou nu exist nicio cifr par.
Scriei definiia complet a subprogramului f.
Exemple: dac subprogramul se apeleaz pentru n=6 i pentru taboul a avnd valorile
(2,3,5,6,4,1), parametrul k va furniza valoarea 462. Dac subprogramul se apeleaz
pentru n=4 i pentru a reinnd valorile (0,0,1,1), k va furniza valoarea 0. Dac
subprogramul se apeleaz pentru n=3 i pentru a reinnd valorile (3,7,1), k va furniza
valoarea -1.
(10p.)

4.

Fiierul text NUMAR.TXT conine pe prima linie un numr real pozitiv x care are cel mult
dou cifre la partea ntreag i cel mult apte cifre dup punctul zecimal..
a) Scriei un program C/C++ care, utiliznd un algoritm eficient din punct de vedere al
timpului de executare i al memoriei utilizate, afieaz pe ecran, separate printr-un spaiu,
dou numere naturale al cror raport este egal cu x i a cror diferen absolut este
minim.
Exemplu: dac fiierul conine valoarea alturat, se vor afia pe ecran 0.375
numerele 3 8.
(6p.)
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(4p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 026


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Pentru generarea numerelor cu n cifre formate cu elementele mulimii {0,2,9} se


utilizeaz un algoritm backtracking care, pentru n=2, genereaz, n ordine, numerele
20,22,29,90,92,99.
Dac n=4 i se utilizeaz acelai algoritm, care este numrul generat imediat dup numrul
2009?
(4p.)
a. 2002
b. 2020
c. 2090
d. 2010

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


void afis (int n)
{
cout<<n; | printf(%d,n);
(4p.)
for (int i=n/2;i>=1;i--)
if(n%i==0)afis(i);
}

2. Subprogramul afis este definit alturat.


Ce se afieaz ca urmare a apelului afis(8); ?

3. Scriei programul C/C++ care citete de la tastatur dou numere naturale nenule n i k
(n100, k100) i afieaz pe ecran, separai prin cte un spaiu, n ordine
descresctoare, cei mai mici k multipli naturali nenuli ai numrului n.
Exemplu: pentru n=6 i k=5 se afieaz 30 24 18 12 6.

(6p.)

4. a) Scriei definiia complet a subprogramului sterge, care primete prin cei 4 parametri
v,n,i,j:
- v, un tablou unidimensional cu maximum 100 de elemente ntregi din intervalul [-1000,1000]
- n, un numr natural reprezentnd numrul de elemente din tabloul v
- i i j dou valori naturale cu 1ijn
i elimin din tabloul v elementele vi,vi+1,,vj actualiznd valoarea parametrului n.
Tabloul modificat este furnizat tot prin parametrul v.
(6p.)
b) Fiierul text NUMERE.IN conine pe prima linie un numr natural nenul n (1n100) i pe
urmtoarea linie n numere ntregi din intervalul [-1000;1000], separate prin cte un spaiu.
Scriei un program C/C++ care citete din fiierul NUMERE.IN numrul natural n,
construiete n memorie un tablou unidimensional v cu cele n numere ntregi aflate pe linia a
doua n fiier i utilizeaz apeluri utile ale subprogramului sterge pentru a elimina din
tablou un numr minim de elemente astfel nct s nu existe dou elemente alturate cu
aceeai valoare. Elementele tabloului obinut se afieaz pe ecran, separate prin cte un
spaiu.
Exemplu: Dac fiierul NUMERE.IN are coninutul:
12
10 10 2 2 19 9 9 9 9 15 15 15 atunci se afieaz 10 2 19 9 15.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(10p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 027


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Pentru generarea n ordine cresctoare a numerelor cu n cifre formate cu elementele


mulimii {0,2,8} se utilizeaz un algoritm backtracking care, pentru n=2, genereaz, n
ordine, numerele 20,22,28,80,82,88.
Dac n=4 i se utilizeaz acelai algoritm, precizai cte numere generate sunt divizibile
cu 100?
(4p.)
8
90
6
10
b.
c.
d.
a.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2. Subprogramul scrie este definit alturat. void scrie (int x,int y)
Ce se afieaz ca urmare a apelului {
cout<<x<<y; | printf(%d%d,x,y);
scrie(2,6); ?
(6p.)
if(x<y)
{
scrie(x+1,y-1);
cout<<(x+y)/2;|printf(%d,(x+y)/2);
}
}
3. Scriei definiia complet a subprogramului nreal cu doi parametri x i y, numere naturale
din intervalul [1;1000] ce returneaz un numr real cu proprietatea c partea sa ntreag
este egal cu x, iar numrul format din zecimalele sale, n aceeai ordine, este egal cu y.
Exemplu: pentru x=12 i y=543, subprogramul returneaz valoarea 12.543.

(10p.)

4. Fiierul text NUMERE.IN conine pe prima linie un numr natural nenul n (2n100) i pe
urmtoarea linie n numere reale pozitive, n ordine strict cresctoare, separate prin cte un
spaiu.
a) Scriei un program C/C++ care, utiliznd un algoritm eficient din punct de vedere al
memoriei utilizate, determin i afieaz pe ecran cel mai mare numr natural x cu
proprietatea c n orice interval deschis avnd drept capete oricare dou dintre cele n numere
aflate pe linia a doua n fiierul NUMERE.IN se gsesc cel puin x numere ntregi.
Exemplu: dac fiierul NUMERE.IN are coninutul:
6
3.5 5.1 9.2 16 20.33 100
atunci se afieaz 2
Explicaie: n oricare dintre intervalele (3.5,5.1), (3.5,9.2), (3.5,16), (3.5,20.33),
(3.5,100), (5.1,9.2), (5.1,16), (5.1,20.33), (5.1,100), (9.2,16), (9.2,20.33),
(9.2,100), (16,20.33), (16,100), (20,33,100) exist cel puin dou numere ntregi.
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(4p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 028


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Generarea tuturor cuvintelor de trei litere mici, nu neaprat distincte, ale alfabetului englez,
se poate realiza cu ajutorul unui algoritm echivalent cu cel de generare a:
(4p.)
a. produsului cartezian
b. combinrilor
c. aranjamentelor
d. permutrilor

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


int f (int x,int y)
(4p.) {
if(x<y)return 1+f(x+1,y);
if(y<x)return 1+f(y+1,x);
return 1;
}

2. Subprogramul f este definit alturat.


Ce valoare are f(8,4)?

3. Scriei un program C/C++ care citete de la tastatur un numr natural n din intervalul
[2,50] i apoi n numere reale i afieaz pe ecran cte dintre cele n numere reale sunt
egale cu media aritmetic a celorlalte n-1 numere reale.
(6p.)
4. a) Scriei definiia complet a unui subprogram primul, care
- primete prin singurul su parametru, a, o valoare natural din intervalul [2,10000]
- returneaz o valoare natural reprezentnd cel mai mic divizor al numrului a mai mare strict
dect 1.
(6p.)
b) Fiierul text NUMERE.IN conine pe prima linie un numr natural nenul n(1n100) i pe
urmtoarea linie n numere naturale din intervalul [2,10000] separate prin cte un spaiu.
Un numr natural n se numete aproape prim dac este egal cu produsul a dou numere
prime distincte. De exemplu, numrul 14 este aproape prim pentru c este egal cu produsul
numerelor prime 2 i 7.
Scriei un program C/C++ care determin, folosind apeluri utile ale suprogramului primul,
cel mai mare numr aproape prim de pe linia a doua a fiierului NUMERE.IN. n cazul n
care exist un astfel de numr se afieaz pe ecran mesajul DA, urmat de numrul
determinat, iar n caz contrar mesajul NU.
Exemplu: dac fiierul NUMERE.IN are coninutul:
6
100 14 21 8 77 35
atunci se afieaz pe ecran DA 77 pentru c numrul 77 este cel cel mai mare dintre numerele
aproape prime din fiier (14=7*2,21=7*3,77=7*11, 35=7*5).
(10p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 029


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

n cte dintre permutrile elementelor mulimii {I,N,F,O} vocalele apar pe


poziii consecutive?
(4p.)
b. 6
c. 12
d. 4
a. 24

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Ce se afieaz ca urmare a void p (int x)


apelului
p(123);
dac {cout<<x; | printf(%d,x);
subprogramul p are definiia
if(x!=0){p(x/10);
alturat?
(6p.)
cout<<x%10; | printf(%d,x%10);}}

3.

Scriei definiia complet a subprogramului multipli, cu trei parametri a,b,c (ab),


numere naturale din intervalul [1,10000] ce returneaz numrul numrul multiplilor lui c
din intervalul [a;b].
Exemplu: pentru a=10, b=27,c=5 subprogramul returneaz valoarea 4.

4.

(10p.)

Se consider dou tablouri unidimensionale A i B cu elemente numere naturale din


intervalul [1,10000]. Spunem c tabloul A se poate reduce la tabloul B dac exist o
mprire a tabloului A n secvene disjuncte de elemente aflate pe poziii consecutive n
tabloul A astfel nct prin nlocuirea secvenelor cu suma elementelor din secven s se
obin, n ordine, elementele tabloului B.
De exemplu tabloul
se poate reduce la tabloul
Fiierul text NUMERE.IN conine pe prima linie dou numere naturale nenule n i m
(1mn100), pe linia a doua n numere naturale din intervalul [1;10000] i pe linia a
treia alte m numere naturale din intervalul [1;10000]. Pe fiecare linie numerele sunt
separate prin cte un spaiu.
a) Scriei un program C/C++ care citete toate numerele din fiierul NUMERE.IN i verific,
utiliznd un algoritm eficient din punctul de vedere al timpului de executare, dac tabloul
construit cu cele n numere aflate pe linia a doua n fiier se poate reduce la tabloul construit
cu cele m numere aflate pe linia a treia n fiier. Programul afieaz pe ecran mesajul DA n
caz afirmativ i mesajul NU n caz negativ.
(6p.)
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(4p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 030


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Pentru generarea numerelor cu n cifre formate cu elementele mulimii {0,4,8} se


utilizeaz un algoritm backtracking care, pentru n=2, genereaz, n ordine, numerele
40,44,48,80,84,88.
Dac n=4 i se utilizeaz acelai algoritm, care este numrul generat imediat dup numrul
4008 ?
(4p.)
b. 4004
c. 4080
d. 8004
a. 4040

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


void f (int x,int y)
Ce se afieaz ca urmare a apelului {int i;
for (i=x;i<=y;i++)
f(1,3);?
(6p.)
{
cout<<i; | printf(%d,i);
f(i+1,y);
}
}

2.

Subprogramul f este definit alturat.

3.

Scriei definiia complet a subprogramului suma, care primete prin cei 4 parametri,
v,n,i,j:
- v, un tablou unidimensional cu maximum 100 de elemente ntregi din intervalul
[-1000,1000], numerotate de la 1 la n;
- n, un numr natural reprezentnd numrul de elemente din tabloul v;
- i i j, dou valori naturale cu 1ij100
i returneaz suma elementelor v1,vi-1, vj+1,,,vn din tabloul v.

4.

(10p.)

Fiierul text NUMERE.IN conine pe prima linie un numr natural nenul n (1n100) i pe
urmtoarea linie n numere reale pozitive ordonate cresctor, separate prin cte un spaiu.
a) Scriei un program C/C++ care citete din fiierul NUMERE.IN numrul natural n, i
determin, utiliznd un algoritm eficient din punct de vedere al timpului de executare i al
memoriei utilizate, numrul minim de intervale nchise de forma [x,x+1], cu x numr
natural, a cror reuniune include toate numerele reale din fiier.
Exemplu: Dac fiierul NUMERE.IN are coninutul:
6
2.3 2.3 2.8 5.7 5.7 6.3
atunci se afieaz 3 (intervalele [2,3], [5,6], [6,7] sunt cele 3 intervale de forma
cerut care conin numere din ir).
(6p.)
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(4p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 031


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Avnd la dispoziie cifrele 0, 1 i 2 putem genera, n ordine cresctoare, numere care au
suma cifrelor egal cu 2 astfel nct primele 6 numere generate sunt, n aceast ordine: 2,
11, 20, 101, 110, 200. Folosind acelai algoritm se genereaz numere cu cifrele 0, 1, 2 i
3 care au suma cifrelor egal cu 4. Care va fi al 7-lea numr din aceast generare ? (4p.)
a. 103
b. 301
c. 220
d. 130
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
void f1(int x)
2.
Se consider subprogramul recursiv f1
{
if (x<=9)
definit alturat. Ce se va afia n urma
{ cout<<x+1; | printf("%d",x+1);
apelului f1(5);?
f1(x+2);
(6p.)
cout<<x+3; | printf("%d",x+3);
}
}
3.

Scriei definiia complet a subprogramului suma care primete ca parametru un tablou


unidimensional x cu cel mult 100 de elemente, numere reale, un numr natural n ce
reprezint numrul efectiv de elemente ale tabloului x (n100), i un numr natural m (nm).
Subprogramul returneaz suma obinut din cele mai mici m elemente ale tabloului x.
(10p.)

4.

n fiierul numere.txt se afl memorate, pe prima linie un numr natural n (1n100), iar
pe fiecare dintre urmtoarele n linii, cte dou numere ntregi x,y (-100xy100),
reprezentnd capetele cte unui segment [x,y] desenat pe axa Ox de coordonate.
a) Scriei n limbajul C/C++ un program eficient din punct de vedere al timpului de executare
i al spaiului de memorare, care citete din fiier datele existente, determin segmentul
rezultat n urma interseciei tuturor celor n segmente date i afieaz pe ecran dou numere
desprie printr-un spaiu ce reprezint capetele segmentului cerut. Dac segmentele nu au
nici un punct comun se va afia pe ecran valoarea 0.
(6p.)
b) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
5
Exemplu: dac fiierul numere.txt are coninutul alturat, se va afia -7 10
pe ecran
3 20
3 5
-5 5
0 12
-8 30

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(4p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 032


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
n vederea participrii la un concurs, elevii de la liceul sportiv au dat o prob de selecie, n
urma creia primii 6 au obinut punctaje egale. n cte moduri poate fi format echipa
selecionat tiind c poate avea doar 4 membri, alei dintre cei 6, i c ordinea acestora n
cadrul echipei nu conteaz?
(4p.)
a. 24
b. 30
c. 15
d. 4
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
void afis(int x)
2.
Subprogramul afis este definit alturat. { if (x>3)
Ce se va afia n urma apelului { cout<<x-1; | printf("%d",x-1);
afis(17);?
afis(x/3);
(6p.)
cout<<x+1; | printf("%d",x+1);
}
}
3.

Scriei definiia complet a subprogramului nr_prim care are ca parametru un numr


natural x (x<10000) i returneaz cel mai mic numr prim, strict mai mare dect x.
Exemplu: pentru x=25 subprogramul returneaz numrul 29, iar pentru x=17 valoarea
returnat va fi 19.
(10p.)

4.

n fiierul numere.txt sunt memorate pe mai multe linii, numere ntregi (cel mult 100),
numerele de pe aceeai linie fiind desprite prin cte un spaiu, fiecare numr avnd cel
mult 9 cifre. S se determine cele mai mici dou valori distincte, fiecare avnd exact dou
cifre, memorate n fiier i s se afieze pe ecran aceste valori, desprite printr-un spaiu.
Dac n fiier nu se afl dou astfel de valori, pe ecran se va afia valoarea 0.
a) Descriei n limbaj natural o metod de rezolvare eficient din punct de vedere al
gestionrii memoriei i al timpului de executare.
(4p.)
b) Scriei programul C/C++ corespunztor metodei descrise la punctul a.
(6p.)
Exemplu: dac fiierul numere.txt are coninutul alturat, se 5 10
3 -77 20
va afia pe ecran, nu neaprat n aceast ordine:
50 5 0 12 18 30
-77 10

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 033


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Folosind un algoritm de generare putem obine numere naturale de k cifre care au suma
cifrelor egal cu un numr natural s. Astfel, pentru valorile k=2 i s=6 se genereaz, n
ordine, numerele: 15, 24, 33, 42, 51, 60. Care va fi al treilea numr generat pentru k=4 i
s=5?
(4p.)
a. 1301
b. 1022
c. 2201
d. 1031
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Subprogramul re este definit alturat. Ce valoarea int re(int i)
{
are re(1)? Dar re(14)?
if (i<9) return 3+re(i+2);
(6p.)
else
if (i==9) return -2;
else return 1+re(i-1);
}
3.

Subprogramul sum3 primete prin parametrul x un tablou unidimensional, cu cel mult 100
de elemente, numere ntregi cu cel mult 4 cifre fiecare, iar prin parametrul n un numr
natural ce reprezint numrul efectiv de elemente ale tabloului x (n100). Scriei definiia
complet a subprogramului sum3 care returneaz suma elementelor tabloului care sunt
divizibile cu 3. Dac tabloul nu conine nicio valoare divizibil cu 3, subprogramul va returna
0.
(6p.)

4.

Pe prima linie a fiierului numere.txt se afl un numr natural n (n100), iar pe


urmtoarele n linii, cte n numere naturale desprite prin cte un spaiu, fiecare avnd cel
mult 9 cifre. Printre aceste numere se afl cel puin unul cu 3 cifre i cel puin unul cu 4 cifre.
a) Scriei n limbajul C/C++, un algoritm eficient din punct de vedere al gestionrii memoriei
care citete din fiier datele existente i determin i afieaz pe ecran, separate printr-un
spaiu, dou numere din fiier, x i y, unde x este cel mai mare numr de trei cifre, iar y
este acel numr pentru care |x-y| are valoare minim. Dac sunt mai multe valori pentru y
care respect condiia impus se va afia numai una dintre ele.
(10p.)
b) Explicai n limbaj natural metoda utilizat justificnd eficiena acesteia.
5
Exemplu: dac fiierul numere.txt are 112 333 1 500 1100
coninutul alturat, se va afia:
1
95 7 97 12
45 800 0 7
89
800 1100
1
5 17 197 102
45 86 0 7
9

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(4p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 034


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Completarea unui bilet de LOTO presupune colorarea a 6 numere dintre cele 49, nscrise
pe bilet. O situaie statistic pe o anumit perioad de timp arat c cele mai frecvente
numere care au fost extrase la LOTO sunt: 2, 20, 18, 38, 36, 42, 46, 48. Cte
bilete de 6 numere se pot completa folosind doar aceste valori, tiind c numrul 42 va fi
colorat pe fiecare bilet?
(4p.)
b. 6!
c. 42
d. 56
a. 21

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


int f(int i)
2.
Se consider definit subprogramul f .
{
Scriei dou valori naturale, x1 i x2 (x1x2, x1<12 i if (i>12) return 1;
x2<12) pentru care f(x1)=f(x2).
(6p.)
else return 1+f(i+2);
}
3.

a) Subprogramul max primete ca parametru un tablou unidimensional x cu cel mult 100 de


elemente numere ntregi, care sunt, n ordine, termenii unei progresii aritmetice i un numr
natural n, care reprezint dimensiunea tabloului. Scriei definiia complet a subprogramului
max care returneaz cel mai mare termen al progresiei aritmetice. Alegei un algoritm de
rezolvare eficient din punct de vedere al timpului de executare.
(6p.)
b) Explicai n limbaj natural metoda utilizat justificnd eficiena acesteia.

(4p.)

c) Pe prima linie a fiierului numere.txt se afl un numr natural n (n100), iar pe


urmtoarele n linii, cte n numere ntregi cu cel mult 4 cifre fiecare. Scriei programul C/C++
care citete din fiier datele existente, determin liniile din fiier pe care s-au memorat n
ordine termenii unei progresii aritmetice i afieaz pe ecran, folosind apeluri ale
subprogramului max cel mai mare numr (diferit de cel situat pe prima linie) din fiier, care n
plus este termenul unei progresii aritmetice.
(10p.)
5
Exemplu: dac fiierul numere.txt are coninutul 5 7 3 1 9
alturat, se va afia 50, deoarece progresiile aritmetice -9 -7 -5 -3 -1
sunt:
2 5 8 14 11
(-9 -7 -5 -3 -1),
50 40 30 20 10
(50 40 30 20 10) i
18 17 16 15 14
(18 17 16 15 14)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 035


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Pentru generarea tuturor mulimilor de cte 5 cifre, avnd la dispoziie cifrele de la 1 la 9,


se poate utilza un algoritm echivalent cu algoritmul de generare a:
(4p.)
a. permutrilor de 5 elemente
mulimii
b. submulimilor
{1,2,3,4,5,6,7,8,9}
c. combinrilor de 9 elemente luate cte 5
d. aranjamentelor de 9 elemente luate cte
5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


void f(int &a,int b)
2.
Subprogramul f este definit alturat. Ce {
se va afia n urma executrii secvenei a=a-5;b=a-2;
de mai jos, n care variabilele a i b sunt cout<<a<<b; | printf("%d%d",a,b);
de tip ntreg?
}
a=3; b=9; f(b,a);f(b,b);
(6p.)
3.

Fiierul text numere.in conine pe prima linie un numr natural n (0<n<1000), iar pe a
doua linie n numere naturale cu cel mult 9 cifre fiecare, desprite prin cte un spaiu.
Scriei un program C/C++ care citete toate numerele din fiier i afieaz pe ecran,
separate prin cte un spaiu, numerele de pe a doua linie a fiierului, care ncep i se
termin cu aceeai cifr.
(10p.)
9
Exemplu:
dac fiierul numere.in are 55 107 3 101 92 7 208 2782
coninutul alturat, se numerele ce se vor afia 80
sunt: 55 3 101 7 2782

4.

a) Scriei definiia complet a unui subprogram sum care primete prin parametrul x un
numr natural de cel mult 4 cifre i returneaz suma divizorilor numrului x, diferii de 1 i
de el nsui.
Exemplu: dac x=10 se va returna valoarea 7 (7=2+5).

(4p.)

b) Scriei programul C/C++ care citete de la tastatur un numr natural n (0<n<100), apoi
n numere naturale (cu cel mult 4 cifre fiecare). Programul determin, folosind apeluri utile
ale subprogramului sum, pentru fiecare numr natural citit, suma divizorilor si proprii i
afieaz pe ecran sumele determinate, n ordinea cresctoare a valorilor lor, separate prin
cte un spaiu.
(6p.)
Exemplu: dac n=5 i numerele citite sunt 10 2 33 6 11
valorile afiate pe ecran vor fi: 0 0 5 7 14
deoarece suma divizorilor lui 10 este 7, suma divizorilor lui 2 este 0, suma divizorilor
lui 33 este 14, suma divizorilor lui 6 este 5, suma divizorilor lui 11 este 0.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 036


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Subprogramul scif returneaz suma cifrelor unui numr natural transmis ca parametru.
Care este valoarea expresiei scif(scif(518)+scif(518))?
(4p.)
14
10
28
1
a.
b.
c.
d.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Utilizm metoda backtracking pentru generarea tuturor modalitilor de a scrie numrul 9


ca sum a cel puin dou numere naturale nenule distincte. Termenii fiecrei sume sunt n
ordine strict cresctoare. Soluiile se genereaz n ordinea: 1+2+6, 1+3+5, 1+8, 2+3+4,
2+7, 3+6 i 4+5. Se aplic exact aceeai metod pentru scrierea lui 12. Scriei, n
ordinea generrii, toate soluiile de forma 2+...
(6p.)

3.

Subprogramul cifra primete prin intermediul parametrului a un numr natural cu cel mult
4 cifre i returneaz ultima cifr par a sa. Dac numrul nu conine cifre pare,
subprogramul returneaz valoarea -1. De exemplu, dac a=8345, subprogramul va
returna 4.
a) S se scrie definiia complet a subprogramului cifra.

(10p.)

b) Pe prima linie a fiierului bac.in se afl un numr natural nenul n (n15000), iar pe
a doua linie a fiierului se afl un ir de n numere naturale, desprite prin cte un spaiu,
fiecare numr fiind format din cel mult 4 cifre.
Scriei un program C/C++ care citete numerele din fiier i afieaz pe ecran, folosind
apeluri utile ale subprogramului cifra, cel mai mare numr care se poate forma cu
ultimele cifre pare ale fiecrui element, dac acestea exist. Alegei o metod de rezolvare
eficient ca timp de executare. Dac toate numerele de pe a doua linie a fiierului au
numai cifre impare, programul va afia mesajul NU EXISTA.
Exemplu: dac fiierul bac.in are coninutul 7
alturat, pe ecran se va afia: 64220
(6p.) 369 113 2 0 33 1354

42

c) Descriei succint n limbaj natural, metoda de rezolvare folosit, explicnd n ce const


eficiena ei (3 - 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 037


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se utilizeaz un algoritm pentru a genera n ordine lexicografic invers toate permutrile


mulimii {1,2,3,4,5}. Primele patru permutri generate sunt: 54321, 54312, 54231,
54213. A cincea permutare este:
(4p.)
53421
54321
54132
54123
a.
b.
c.
d.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Considerm subprogramul f definit alturat. int f(int x,int y)


Ce valoare are f(7,11)? Dar f(11,7)? {
if(x<=y) return x-y;
(6p.)
return f(y-x,x-1)+3;
}

3.

Scriei un program C/C++ care citete numerele naturale nenule n i k (kn100) i un


tablou unidimensional cu n elemente numere ntregi, fiecare avnd cel mult 4 cifre.
Programul modific tabloul, permutnd circular, cu k poziii spre stnga, elementele
acestuia i afieaz pe ecran, separate prin cte un spaiu, elementele tabloului obinut.
Exemplu: dac n=4,
elementele: 4 1 2 3.

4.

k=3

i tabloul v=(1,2,3,4), atunci se vor afia n ordine


(10p.)

a) Scriei doar antetul subprogramului nrdiv, care primete prin intermediul parametrului x
un numr natural nenul cu cel mult 4 cifre, i returneaz numrul de divizori primi ai lui x.
(4p.)
b) Pe prima linie a fiierului bac.in se afl un numr natural nenul n (n1000), iar pe a
doua linie a fiierului se afl un ir format din n numere naturale nenule, desprite prin
cte un spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++
care citete numerele din fiier i care afieaz pe ecran, folosind apeluri utile ale
subprogramului nrdiv, prima i ultima valoare din irul celor n numere citite, care au un
numr par de divizori primi. Numerele afiate vor fi separate printr-un spaiu.
Exemplu: dac fiierul bac.in are coninutul alturat, pe 7
ecran se va afia: 20 10
(6p.) 30 105 20 140 7 10 5

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 038


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utilizm metoda backtracking pentru generarea tuturor modalitilor de a scrie numrul 9


ca sum a cel puin dou numere naturale nenule distincte. Termenii fiecrei sume sunt
n ordine strict cresctoare. Soluiile se genereaz n ordinea: 1+2+6, 1+3+5, 1+8,
2+3+4, 2+7, 3+6 i 4+5. Se aplic exact aceeai metod pentru scrierea lui 8. Cte
soluii vor fi generate?
(4p.)
a. 3
b. 4
c. 6
d. 5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru definiia alturat a subprogramului int sc(long x)


sc, stabilii ce valoare are sc(10). Dar {
if(x<10) return x;
sc(901324)?
(6p.)
return sc(x/10)+x%10;
}

3.

Scriei n limbajul C/C++ definiia complet a subprogramului Del care are doi parametri:
x, un numr ntreg de cel mult 9 cifre, i y, un numr natural nenul de o cifr.
Subprogramul determin eliminarea tuturor cifrelor lui x mai mari strict dect y i
furnizeaz numrul obinut tot prin intermediul parametrului x. Dac toate cifrele lui x sunt
mai mari strict dect y, atunci x va primi valoarea -1.
Exemplu: dac x=37659 i y=6, dup apel x=365, iar y=6.

4.

(10p.)

Se consider subprogramul inter, cu doi parametri: x i y (numere ntregi formate din cel
mult patru cifre fiecare); subprogramul interschimb valorile a dou variabile transmise prin
intermediul parametrilor x i y.
a) Scriei n limbajul C/C++ definiia complet a subprogramului inter.

(4p.)

b) Pe prima linie a fiierului bac.in se afl un numr natural nenul n1000, iar pe a doua
linie a fiierului se afl un ir de n numere naturale nenule, desprite prin cte un spaiu,
fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care afieaz pe
ecran, n ordine cresctoare, numerele aflate pe a doua linie a fiierului. Numerele vor fi
afiate pe o singur linie, iar ntre dou numere se va lsa un spaiu. Se vor folosi apeluri
utile ale subprogramului inter.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 039


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utilizm metoda backtracking pentru generarea tuturor modalitilor de a scrie numrul 6 ca


sum a cel puin dou numere naturale nenule. Termenii fiecrei sume sunt n ordine
cresctoare. Soluiile se genereaz n ordinea: 1+1+1+1+1+1, 1+1+1+1+2, 1+1+1+3,
1+1+2+2, 1+1+4, 1+2+3, 1+5, 2+2+2, 2+4 i 3+3. Se aplic exact aceeai metod
pentru scrierea lui 9. Care este penultima soluie?
(4p.)
a. 3+3+3
b. 3+6
c. 4+5
d. 2+7

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru definiia alturat a subprogramului int f(int x)


f, ce valoare are f(3)? Dar f(8)?
(6p.) {
if(x<=4) return x*x-3;
return f(x-3)+4;
}

3.

Pe prima linie a fiierului bac.in se afl un numr natural nenul n (n1000), iar pe a
doua linie a fiierului se afl un ir format din n numere naturale, desprite prin cte un
spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care
citete valorile din fiier i care afieaz pe ecran mesajul DA dac toate elementele pare
din ir sunt n ordine cresctoare i mesajul NU n caz contrar.
Exemplu: dac fiierul bac.in are coninutul
alturat, pe ecran se va afia: DA
(10p.)

4.

8
10 113 12 33 12 42 1354 421

Se consider subprogramul pr, care primete prin intermediul parametrului a un numr


natural nenul cu cel mult 9 cifre i returneaz 1 dac numrul este prim i 0 n caz contrar.
a) Scriei numai antetul subprogramului pr.

(4p.)

b) Considerm un numr natural nenul n>99 cu cel mult 9 cifre. Din n se obine un ir de
valori prin eliminarea succesiv a ultimei cifre, apoi a ultimelor dou cifre, apoi a ultimelor
trei cifre etc., pn ce se obine un numr de dou cifre, ca n exemplu. S se realizeze un
program C/C++ care citete de la tastatur numrul n i care, folosind apeluri utile ale
subprogramului pr, afieaz pe ecran, separate prin cte un spaiu, doar valorile prime din
irul numerelor obinute din n, prin procedeul descris mai sus.
Exemplu: pentru n=193124 se obine irul de valori 19312,1931, 193, 19. din care se
vor afia pe ecran doar valorile 1931 193 19 (nu neaprat n aceast ordine).
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 040


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utilizm metoda backtracking pentru generarea tuturor modalitilor de a scrie numrul 6 ca


sum a cel puin dou numere naturale nenule. Termenii fiecrei sume sunt n ordine
cresctoare. Soluiile se genereaz n ordinea: 1+1+1+1+1+1, 1+1+1+1+2, 1+1+1+3,
1+1+2+2, 1+1+4, 1+2+3, 1+5, 2+2+2, 2+4 i 3+3. Se aplic exact aceeai metod
pentru scrierea lui 9. Cte soluii de forma 2+... vor fi generate?
(4p.)
a. 2
b. 3
c. 4
d. 5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

n secvena alturat variabilele i, j i aux sunt ntregi, for(i=1;i<5;i++)


iar v
memoreaz un tablou unidimensional ale crui for(j=5;j>i;j--)
if(v[i]<v[j])
elemente au urmtoarele valori: v[1]=2, v[2]=13,
{
v[3]=1, v[4]=5, v[5]=-4. Care este numrul de
aux=v[i];
interschimbri care se efectueaz n urma executrii
v[i]=v[j];
secvenei alturate? Dai un exemplu de alte 5 valori
v[j]=aux;
pentru elementele tabloului astfel nct, n urma executrii
}
secvenei alturate, s nu se efectueze nicio
interschimbare.
(6p.)

3.

a) Pe prima linie a fiierului bac.in se afl un numr natural nenul n (n1000), iar pe a
doua linie a fiierului se afl un ir format din n numere naturale, desprite prin cte un
spaiu, fiecare numr fiind format din cel mult 4 cifre. Scriei un program C/C++ care
citete numerele din fiier i care afieaz pe ecran mesajul DA dac elementele pare n ir
sunt n ordine cresctoare, iar cele impare sunt n ordine descresctoare i mesajul NU n
caz contrar. Alegei un algoritm eficient ca timp de executare i spaiu de memorie utilizat.
(6p.)
b) Descriei succint, n limbaj natural, metoda utilizat, justificnd eficiena acesteia.

(4p.)

Exemplu: dac fiierul bac.in are coninutul 10


10 1133 12 331 12 42 1354 221
alturat, pe ecran se va afia: DA
13 13
4.

a) Scriei definiia complet a subprogramului sdiv care primete prin intermediul


parametrului y un numr natural cu cel mult 6 cifre i returneaz suma tuturor divizorilor
numrului y.
(5p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n (n<10000) i
care, folosind apeluri ale subprogramului sdiv verific dac suma divizorilor lui n este un
numr prim. n caz afirmativ, programul va afia pe ecran mesajul Da i n caz contrar va
afia mesajul NU.
Exemplu: dac n=206, atunci programul va afia: NU (1+2+103+206=312, iar 312 nu
este un numr prim).
(5p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 041


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
a.
b.
c.
d.

Cea mai mare dintre valorile strict negative memorate ntr-un tablou unidimensional NU
exist dac:
(4p.)
n tablou sunt memorate numai valori strict negative
n tablou exist cel puin o valoare strict negativ
n tablou sunt memorate valori nenule pozitive i negative
n tablou sunt memorate numai valori strict pozitive

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


tiind c p este un vector cu 3 void G(int k)
2.
componente ntregi (vector declarat {int i;
global), stabilii cu ce trebuie nlocuite for(i=1;i<=;i++)
i n definiia subprogramului G { p[k]=i;
alturat astfel nct n urma apelului
if()G(k+1);
G(0) s se afieze toate numerele de
else
3 cifre nenule, fiecare numr fiind
cout<<p[0]<<p[1]<<p[2]<<endl; |
afiat o singur dat.
(6p.)
printf("%d%d%d\n",p[0],p[1],p[2]);
}
}
3.

Scriei un subprogram DIST, cu doi parametri, care primete prin intermediul parametrului a
un tablou unidimensional cu cel mult 100 de elemente, numere naturale de cel mult 4 cifre
fiecare, i prin intermediul parametrului n un numr natural nenul, n<100, ce reprezint
numrul de elemente din tablou. Subprogramul returneaz valoarea 1 dac toate
elementele tabloului a sunt distincte i dac diferena absolut a oricror dou elemente
vecine din tablou este diferit de 1, altfel returnnd valoarea 0.
(10p.)

4.

Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000), iar pe a
doua linie un ir format din n cifre, separate prin cte un spaiu.
a) Scriei un program C/C++ care determin n mod eficient din punct de vedere al
timpului de executare, cea mai mare cifr dintre cele situate pe a doua linie a fiierului,
precum i numrul de apariii ale acesteia. Cele dou numere vor fi afiate pe o singur
linie a ecranului, separate printr-un spaiu.
Exemplu: daca fiierul numere.txt are urmtorul coninut:
7
3 5 2 1 5 3 1
atunci pe ecran se va afia: 5 2.

(6p.)

b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const


eficiena ei (3 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 042


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking se genereaz toate permutrile mulimii {1,2,3,4}. Dac


primele trei permutri generate sunt, n acest ordine: 1234, 1243, 1324 precizai care
este permutarea generat imediat dup 3412.
(4p.)
a. 3214
b. 3413
c. 4123
d. 3421

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


Subprogramul f are definiia alturat. Ce valoare int f(int x)
2.
are f(7)? Dar f(100)?
(6p.) {if(x%6==0)return x;
else return f(x-1);
}
3.

Scriei definiia complet a unui subprogram P, cu trei parametri, care primete prin
intermediul primului parametru, a, un tablou unidimensional de cel mult 100 de numere
ntregi, cu cel mult 4 cifre fiecare, prin intermediul celui de-al doilea parametru, n, numrul
efectiv de elemente ale tabloului, iar prin parametrul k, un numr natural (k<n) i returneaz
cea mai mare sum cu k termeni care se poate obine adunnd k elemente ale tabloului.
Exemplu: dac n=6 i k=4, iar irul este format din elementele (5, 2, 5, 4, 1, 3),
atunci la apel se va returna 17.
(10p.)

4.

Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000) iar pe a
doua linie, separate prin cte un spaiu, n numere naturale formate din cel mult dou cifre
fiecare.
a) Scriei un program C/C++ care determin n mod eficient, din punct de vedere al timpului
de executare, numerele ce apar o singur dat n a doua linie a fiierului. Aceste numere
vor fi afiate pe ecran n ordine cresctoare, separate prin cte un spaiu.
Exemplu: dac fiierul numere.txt are urmtorul coninut:
7
3 5 2 1 5 23 1
atunci pe ecran se va afia: 2 3 23.

(6p.)

b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const


eficiena ei (3 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 043


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking se genereaz numerele formate din cte 3 cifre distincte din
mulimea {1,3,5,7}. Dac primele trei numere generate sunt, n acest ordine: 135,
137, 153 care este cel de-al patrulea numr generat?
(4p.)
a. 315
b. 173
c. 157
d. 357

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


Subprogramul f are definiia alturat. Ce valoare int f(int x)
2.
are f(3)? Dar f(10)?
(6p.) {if(x==0)return 0;
else return f(x-1)+2;
}
3.

Scriei definiia complet a unui subprogram P cu doi parametri, care primete prin
intermediul primului parametru, n, un numr natural nenul (1n100) i prin intermediul
celui de-al doilea parametru, a, un tablou unidimensional cu elementele numerotate de la 1
la n, numere ntregi de cel mult 4 cifre fiecare. Subprogramul returneaz suma tuturor
numerelor impare aflate pe poziii pare din tablou.
Exemplu: dac n=6, iar irul a este format din elementele (3,12,7,1,4,3), atunci la apel se
va returna 4.
(10p.)

4.

Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000) iar pe a
a doua linie n cifre, separate prin cte un spaiu.
a) Scriei un program C/C++ care determin n mod eficient, din punct de vedere al timpului
de executare, cel mai mare numr ce se poate forma cu toate cifrele coninute de a doua
linie a fiierului numere.txt. Numrul determinat se va afia pe ecran.
Exemplu: daca fiierul numere.txt are urmtorul coninut:
7
2 5 3 1 5 8 9
atunci pe ecran se va afia: 9855321.

(6p.)

b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const


eficiena ei (3 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 044


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Care dintre urmtoarele variante reprezint antetul corect al unui subprogram care primete
prin parametrii x i y dou numere ntregi i furnizeaz prin parametrul m cea mai mic
dintre cele dou valori x i y?
(4p.)
a. int minim(int x,int y,int m)
b. void minim(int x,int y,int &m)
int
minim(int
x,int
y)
c.
d. void minim(int& x,int& y,int m)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


Subprogramul f are definiia alturat. Ce int f(int x,int y)
2.
valoare are f(6,5)? Dar f(5,10)?
(6p.) {if(x==y)return x;
else if(x<y)return f(x+1,y-1);
else return f(x-1,y);
}
3.

4.

Scriei definiia complet a unui subprogram P, cu doi parametri, a i b, numere naturale cu


cel mult 4 cifre fiecare, care afieaz pe ecran, separate prin cte un spaiu, numerele aflate
n intervalul nchis determinat de valorile a i b, care sunt ptratele unor numere prime.
Exemplu: pentru a=40 i b=1 se vor afia valorile: 4 9 25 (nu neaprat n aceast ordine).
(10p.)
Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000), iar pe a
doua linie n numere naturale, formate din cel mult 4 cifre, separate prin cte un spaiu.
a) Scriei un program C/C++ care determin n mod eficient, din punct de vedere al timpului
de executare, cifrele ce apar n scrierea numerelor situate pe a doua linie a fiierului.
Programul va afia pe ecran aceste cifre in ordine cresctoare, separate prin cte un spaiu.
Exemplu: daca fiierul numere.txt are urmtorul coninut:
7
243 32 545 74 12 1344 90
atunci pe ecran se va afia: 0 1 2 3 4 5 7 9

(6p.)

b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const


eficiena ei (3 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 045


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking se genereaz toate cuvintele de cte 3 litere din mulimea
{a,b,c}. Dac primele patru cuvinte generate sunt, n acest ordine: aaa, aab, aac,
aba, care este cel de-al optulea cuvnt generat?
(4p.)
a. acb
b. acc
c. aca
d. bca

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


Subprogramul f are definiia alturat. Ce valoare are int f(int x)
2.
f(4)? Dar f(11)?
(6p.) {if(x<1)return 1;
else return f(x-3)+1;
}
3.

Scriei programul C/C++ care citete de la tastatur numrul natural n (0<n<100) i un ir


format din n numere reale. Aceste numere au att partea ntreag ct i partea fracionar
formate din cel mult trei cifre. Programul determin i afieaz pe ecran toate numerele din
ir care apar o singur dat n acesta.
Exemplu: dac n=7, iar irul este format din elementele (3.4, -151, 0.291, 3.4,
4.09, 3.4, 0.291), atunci pe ecran se va afia -151 4.09.
(10p.)

4.

Fiierul text numere.txt conine pe prima linie un numr natural n (0<n<100000), iar pe a
doua linie n numere naturale, formate din cel mult dou cifre, separate prin cte un spaiu.
a) Scriei un program C/C++, eficient din punct de vedere al timpului de executare, care
afieaz pe ecran toate numerele situate pe a doua linie a fiierului, n ordinea cresctoare
a valorilor lor, separate prin cte un spaiu.
Exemplu: dac fiierul numere.txt are urmtorul coninut:
7
12 21 22 11 9 12 3
atunci pe ecran se va afia: 3 9 11 12 12 21 22

(6p.)

b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const


eficiena ei (3 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 046


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Un program genereaz, n ordine cresctoare, numerele naturale de exact 5 cifre din


mulimea {1, 2, 3, 4, 5}. Fiecare dintre numerele generate are cifrele distincte dou cte
dou. Primele 3 numere astfel generate sunt: 12345, 12354, 12435. Care este numrul
generat imediat dup 12543?
(4p.)
15342
b. 12534
c. 13245
d. 13452

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Funcia f are definiia alturat. Dac f(x) are long f(int n)


{
valoarea 10100, care este valoarea lui x?
if(n<=0) return 0;
(6p.)
else return f(n-1)+2*n;
}

3.

Fiierul bac.txt conine pe prima linie un numr natural n (n100), iar pe a doua linie,
separate prin cte un spaiu, n numere naturale nenule, cu cel mult 4 cifre fiecare. Scriei
programul C/C++ care citete de la tastatur un numr natural k (k25), construiete n
memorie i afieaz pe ecran un tablou unidimensional ce conine, n ordinea n care au
fost citite, numerele de pe a doua linie a fiierului bac.txt care au cel puin k divizori.
Exemplu: pentru k=5 i fiierul bac.txt cu coninutul 6
100 9 400 56 7 10
alturat, tabloul care se afieaz este:
100 400 56
(10p.)

4.

a) Scriei n limbajul C/C++ doar antetul subprogramului cifre, care prin intermediul
parametrului nr primete un numr natural de cel mult 9 cifre i furnizeaz prin intermediul
parametrilor nc i sc numrul de cifre i respectiv suma cifrelor din scrierea lui nr.
(4p.)
b) Scriei programul C/C++ care citete de la tastatur un numr natural n (10n109) i
verific, folosind apeluri utile ale subprogramului cifre, dac n scrierea n baza 10 a lui n
se gsete cel puin o cifr care s fie media aritmetic a celorlalte cifre din componena lui
n.Programul afieaz pe ecran mesajul DA n caz afirmativ i mesajul NU n caz contrar.
Exemplu: pentru n=27989 programul va afia mesajul DA, deoarece n scrierea lui n apare
cifra 7 care este media aritmetic a celorlalte cifre din scrierea lui n: 7=(2+9+8+9)/4.
Pentru n=7351 se va afia mesajul NU.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 047


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Se consider opt bancnote: trei cu valoarea de 1 leu, dou cu valoarea de 10 lei i trei cu
valoarea de 100 de lei. Cte rezultate distincte se pot obine nsumnd valorile a exact
cinci dintre cele opt bancnote, astfel nct suma s fie de cel puin 200 de lei?
(4p.)
6
12
15
3
a.
b.
c.
d.

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.
Se consider subprogramul f definit alturat. long f(int n)
Ce valoare are f(5)? Dar f(100)? (6p.) {
if(n<0) return 0;
else
return f(n-2)+n;
}
3.

Fiierul text bac.txt conine pe prima linie un numr natural n (n<100), iar pe a doua
linie, separate prin cte un spaiu, n numere naturale de cel mult 8 cifre fiecare.
Scriei un program C/C++ care citete de la tastatur un numr natural k (k<50) precum
i numerele din fiierul bac.txt i afieaz pe ecran, cu cte un spaiu ntre ele, toate
numerele de pe a doua linie a fiierului care sunt puteri ale lui k. Un numr natural x este
y
putere a lui k dac exist un numr natural y astfel nct x=k . Dac nu exist un
asemenea numr pe a doua linie a fiierului, se afieaz pe ecran mesajul NU.
Exemplu: dac se citete de la tastatur k=2, iar 8
fiierul are coninutul alturat, atunci pe ecran se 32 56 317 809 256 2 1 60
afieaz numerele:
32 256 2 1
(10p.)

4.

a) Scriei n limbajul C/C++ doar antetul unui subprogram cif, care primete prin
intermediul primului parametru, nr, un numr natural cu cel mult 9 cifre i furnizeaz prin
intermediul celui de-al doilea parametru, s, suma cifrelor din scrierea lui nr.
(4p.)
b) Scriei programul C/C++ care citete de la tastatur un numr natural n (0<n<25), apoi
un ir de n numere naturale nenule cu cel mult 9 cifre fiecare i care afieaz pe ecran,
separate prin cte un spaiu, numerele din ir care au suma cifrelor maxim, folosind
apeluri utile ale subprogramului cif.
Exemplu: dac pentru n=8 se citete irul de numere 274 56018 354 8219 293 287
932 634 atunci, pe ecran, se afieaz numerele 56018 8219.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 048


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Se consider subprogramul
f definit int f(int x)
alturat. Ce valoare are f(250)?
(4p.) {
if(x%3==0) return 0;
else return 1+f(x/3);
}
b. 2
c. 3
d. 4
a. 5

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se genereaz prin metoda backtracking mulimile distincte ale cror elemente sunt numere
naturale nenule i care au proprietatea c suma elementelor fiecrei mulimi este egal cu
7. Astfel, sunt generate, n aceast ordine, mulimile: {1,2,4}, {1,6}, {2,5}, {3,4},
{7}. Folosind aceeai metod pentru a genera mulimile distincte ale cror elemente sunt
numere naturale nenule i care au proprietatea c suma elementelor fiecrei mulimi este
egal cu 9, stabilii n ce ordine sunt generate urmtoarele mulimi: M1={2,3,4};
M2={3,6}; M3={2,7}; M4={4,5}.
(6p.)

3.

Se consider subprogramul cmdiv care primete prin parametrii x i y dou valori ntregi
pozitive (0<x<100 i 0<y<100) i returneaz cel mai mare divizor comun al lor.
a) Scriei definiia complet a subprogramului cmdiv.
(4p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n (1n100) i
determin, utiliznd apeluri ale subprogramului cmdiv, numrul fraciilor ireductibile de

x
cu x numr natural (1xn). Numrul obinut va fi afiat pe ecran.
n
1 2 3 4 5 6
Exemplu: pentru n=6 se afieaz 2, deoarece, dintre fraciile , , , , , doar dou
6 6 6 6 6 6
1 5
sunt ireductibile : i .
(6p.)
6 6
forma

4.

Fiierul text bac.in conine pe prima linie un numr natural n (0<n<5000), iar pe a doua
linie, separate prin cte un spaiu, n numere naturale, formate din cel mult 4 cifre fiecare.
Scriei un program C/C++ care determin i scrie n fiierul bac.out toate numerele de pe
a doua linie a fiierului care apar o singur dat pe aceast linie. Numerele determinate se
vor afia n ordinea cresctoare a valorilor lor, separate prin cte un spaiu.
Exemplu: dac pe prima linie a fiierului bac.in se afl 10, iar pe linia a doua se gsesc
numerele 2 4548 568 4548 57 89 5974 2 89 32 atunci valorile cutate sunt 32 57
568 5974.
(10p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 049


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se genereaz n ordine strict cresctoare numerele de cte ase cifre care conin: cifra 1 o
singur dat, cifra 2 de dou ori i cifra 3 de trei ori. Se obin, n aceast ordine, numerele:
122333, 123233, 123323, , 333221. Cte numere generate prin aceast metod au
prima cifr 1 i ultima cifr 2?
(4p.)
b. 3
c. 4
d. 8
a. 1

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.
Pentru o valoare natural strict mai mare void divi(long i)
dect 1 memorat n variabila global n, {
if(==0)
subprogramul recursiv alturat afieaz
cout<< ; | printf(%ld, );
cel mai mare divizor al lui n, mai mic dect
else
divi(i-1);
n, la apelul divi(n). Cu ce trebuie
}
nlocuite i ?
(6p.)
Scriei
un
program
C/C++
care
citete
de la tastatur un numr natural n ( 1n50) i apoi
3.
un ir de n numere naturale cu cel mult 4 cifre fiecare i care verific dac elementele irului
pot fi rearanjate astfel nct s respecte regula: al doilea element este cu 1 mai mare dect
primul, al treilea cu 2 mai mare dect al doilea, ... , ultimul este cu n-1 mai mare dect
penultimul. Programul afieaz pe ecran mesajul DA n caz afirmativ i mesajul NU n caz
contrar.
Exemplu: pentru n=4 i irul 8,5,11,6 se afieaz DA (elementele pot fi rearajate astfel
nct s respecte regula dat: 5, 6, 8, 11)
(10p.)
4.

Se consider subprogramul cmax care prin parametrul a primete un numr natural nenul
mai mic dect 30000, iar prin parametrul b furnizeaz cifra maxim din numrul a.
a) Scriei, folosind limbajul C/C++, doar antetul subprogramului cmax.

(4p.)

b) Fiierul bac.txt conine cel mult 1000 numere naturale nenule, mai mici dect 30000
fiecare, separate prin cte un spaiu. Scriei programul C/C++ care citete din fiierul
bac.txt toate numerele i care determin cea mai mare cifr din scrierea lor i cel mai mic
dintre numerele care conin aceast cifr, folosind apeluri utile ale subprogramului cmax.
Cifra i numrul determinate se vor afia pe ecran, separate printr-un spaiu.
Exemplu: dac fiierul bac.txt conine valorile: 23 12 64 12 72 345 67 23 71 634
atunci pe ecran se afieaz 7 67.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 050


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Valorile memorate de componentele int t (int i, int v[])
tabloului v, cu indicii de la 0 la 5, sunt, n {
if(i==0) return 0;
aceast ordine: 973, 51, 75, 350, 350, 15.
if(v[i]!=v[i-1]) return t(i-1,v);
Se consider subprogramul t cu definiia
return
1;
alturat. Care dintre urmtoarele expresii
}
are valoarea 2 ?
(4p.)
a. t(0,v)+t(3,v)
b. t(1,v)+t(4,v)
c. t(4,v)+t(5,v)
d. t(3,v)+t(4,v)

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se genereaz n ordine strict cresctoare toate numerele de cte ase cifre care conin:
cifra 1 o singur dat, cifra 2 de dou ori i cifra 3 de trei ori. Se obin, n aceast ordine,
numerele: 122333, 123233, 123323, , 333221. Ce numr se afl imediat naintea i ce
numr se afl imediat dup numrul 332312 n irul numerelor generate?
(6p.)

3.

Se consider subprogramul divxy care primete prin parametrii x i y dou valori ntregi
pozitive (0<x<1000 i 0<y<1000) i returneaz valoarea 1 dac y este divizor al lui x sau x
este divizor al lui y i returneaz valoarea 0 n caz contrar.
a) Scriei definiia complet a subprogramului divxy.
(4p.)
b) Scriei un program C/C++ care citete de la tastatur trei numere naturale nenule a, b i
n, cu cel mult 3 cifre fiecare i care afieaz pe ecran toi divizorii lui n din intervalul nchis
determinat de a i b folosind apeluri utile ale subprogramului divxy. Intervalul nchis
determinat de a i b este [a,b] dac a<b sau [b,a] dac ba. Numerele afiate sunt
separate prin cte un spaiu. Dac nu exist niciun astfel de numr se afieaz mesajul NU
EXISTA.
Exemplu: pentru a=85, b=10 i n=40 se afieaz: 10 20 40 (nu neaprat n aceast
ordine).
(6p.)

4.

Fiierul bac.in conine pe prima linie un numr natural n (0<n<5000), iar pe a doua linie,
separate prin cte un spaiu, n numere naturale, formate din cel mult 4 cifre fiecare.
Scriei un program C/C++ care determin i scrie n fiierul bac.out, toate numerele, citite de
pe a doua linie a fiierului bac.in, care apar de cel puin dou ori. Numerele determinate se
vor scrie n ordine cresctoare, pe aceeai linie, separate prin cte un spaiu.
Exemplu: dac fiierul bac.in conine pe prima linie numrul 11, iar pe linia a doua
valorile 23 12 54 12 78 345 67 23 78 934 23
atunci fiierul bac.out va conine: 12 23 78
(10p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 051


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Care este antetul corect al subprogramului cifre, care primete prin intermediul primului
parametru, x, un numr natural i furnizeaz prin intermediul celui de-al doilea parametru,
y, suma cifrelor numrului natural x?
(4p.)
a. void cifre(int x, int &y)
b. int cifre(int x)
d. void cifre(int &x, int y)
c. void cifre(int x, int y)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider numrul x=21034085. Permutnd cifrele lui x se obin alte numere naturale.
a) Dai exemplu de un astfel de numr care s fie divizibil cu 25.
b) Cte dintre numerele obinute au exact 7 cifre?
(6p.)

3.

Se consider subprogramul dist2, care primete prin intermediul parametrilor xa, ya i


respectiv xb, yb, coordonatele carteziene ntregi (abscis, ordonat) pentru dou puncte
din plan, A i respectiv B. Subprogramul returneaz ptratul distanei dintre cele dou
puncte.
a) Scriei n limbajul C/C++ definiia complet a subprogramului dist2.

(4p.)

b) Scriei un program C/C++ care citete de la tastatur 8 valori ntregi reprezentnd


coordonatele carteziene pentru patru puncte din plan i afieaz mesajul Da dac cele
patru puncte pot fi vrfurile unui ptrat, iar n caz contrar afieaz mesajul Nu,folosind
apeluri utile ale subprogramului dist2.
Exemplu: dac coordonatele punctelor sunt cele alturate 0 0
3 0
atunci se va afia mesajul Da
(6p.)
3 3
0 3
4.

Fiierul text date.in conine pe prima linie un numr natural nenul n (n100), iar pe a
doua linie n numere naturale nenule, separate prin cte un spaiu, fiecare numr avnd
maximum 4 cifre. Scriei un program C/C++ care citete toate numerele din fiierul text
date.in, construiete n memorie un tablou unidimensional a, cu cele n elemente din fiier
i afieaz pe ecran perechile (ai, aj) , 1i<jn, cu proprietatea c elementele fiecreia
dintre aceste perechi au aceeai paritate. Fiecare pereche se va afia pe cte o linie a
ecranului, elementele perechii fiind separate prin cte un spaiu. n cazul n care nu exist
nicio pereche, se va afia valoarea 0.
5
Exemplu: dac fiierul date.in are coninutul alturat,
16 22 3 6 1
se vor afia:
16 22
16 6
22 6
3 1

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(10p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 052


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking, se genereaz n ordine lexicografic toate anagramele


cuvntului caiet ( cuvinte formate din aceleai litere, eventual n alt ordine). Cte cuvinte
care ncep cu litera t vor fi generate?
(4p.)
1
6
12
24
a.
b.
c.
d.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.
Se consider subprogramul f, definit int f(int n)
alturat. Ce valoare are f(4)? Dar f(9)? { if (n==0) return 0;
if(n%2==1)return n-f(n-1);
(6p.)
return f(n-1)-n
}
3.

Subprogramul mult, cu doi parametri, primete prin intermediul primului parametru, n, un


numr natural nenul cu maximum trei cifre i prin intermediul celui de-al doilea parametru,
a, un tablou unidimensional avnd n componente numere naturale cu cel mult 8 cifre
fiecare. Subprogramul returneaz valoarea 1 dac cele n componente ale lui a pot forma o
mulime i returneaz 0 n caz contrar.
a) Scriei definiia complet a subprogramului mult.

(6p.)

b) Fiierul text date.in conine cel mult 400 de numere naturale avnd maximum 8 cifre
fiecare. Scriei un program C/C++ care, folosind apeluri utile ale subprogramului mult,
afieaz pe ecran valoarea maxim k, astfel nct primele k numere succesive din fiier s
poat forma o mulime.
Exemplu: dac fiierul date.in conine
16 17 8 31 8 2 10

4.

atunci se va afia 4 (deoarece primele patru numere din fiier pot forma o mulime i
acesta este cardinalul maxim posibil n condiiile impuse de enunul problemei)
(4p.)
Scriei un program C/C++ care citete de la tastatur dou numere naturale nenule n i k
(k<n10000) i afieaz pe ecran un ir format din k numere naturale consecutive care au
suma n. Numerele se vor afia pe ecran, n ordine cresctoare, desprite ntre ele prin
cte un spaiu. n cazul n care nu exist un astfel de ir, se va afia mesajul Nu exist.
(10p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 053


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Subprogramul f realizeaz interschimbarea valorilor a dou variabile ntregi transmise prin


intermediul parametrilor x i y. Care este antetul corect al subprogramului f?
(4p.)
void
f(int
&x,
int
&y)
int
f(int
x,int
y)
a.
b.
d. void f(int &x, int y)
c. void f(int x, int &y)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.
Se consider subprogramul f, definit int f(unsigned int n)
alturat. Pentru ce valori ale lui n {
if (n==0) return 0;
aparinnd intervalului [10, 20] se
else if(n%2==0)
obine la apel f(n)= 0?
( 6p.)
return n%10+f(n/10);
else return f(n/10);
}
3.

Se consider subprogramul cmmdc, care primete prin intermediul a doi parametri, a i b,


dou numere naturale nenule, cu maximum 8 cifre fiecare, i returneaz cel mai mare
divizor comun al valorilor parametrilor a i b.
a) Scriei definiia complet a subprogramului cmmdc.

(4p.)

b) Scriei un program C/C++ care citete de la tastatur un numr natural n (n<300), i,


cu ajutorul subprogramului cmmdc, determin numrul perechilor de valori naturale (a,b),
1<a<bn, cu proprietatea c a i b nu au niciun divizor comun n afar de 1. Numrul
obinut se va afia pe ecran.
(6p.)
Exemplu: dac se citete n=6, atunci se va afia 6 (deoarece perechile (2,3), (2,5),
(3,4), (3,5), (4,5), (5,6) satisfac condiiile din enun).
4.

Fiierul text bac.txt are dou linii: pe prima linie conine un numr natural nenul n
(n<=100), iar pe linia a doua un ir format din n numere naturale distincte de cel mult 4
cifre fiecare, desprite prin spaii. Scriei un program C/C++ care adaug n fiier toate
permutrile circulare distincte ale irului de pe linia a doua a fiierului. Astfel, se vor aduga
la sfritul fiierului nc n-1 linii, fiecare linie coninnd permutarea circular cu o poziie
ctre stnga, a elementelor irului aflat pe linia precedent din fiier. Elementele fiecrei
permutari vor fi separate prin cte un spaiu.
Exemplu: dac fiierul bac.txt conine liniile:
4
4
10 20 30 49
10 20 30 49
20 30 49 10
atunci, dup rularea programului, fiierul va avea coninutul 30 49 10 20
reprezentat alturat.
(10p.) 49 10 20 30

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 054


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking se genereaz n ordine lexicografic toate anagramele


cuvntului caiet ( cuvinte formate din aceleai litere, eventual n alt ordine). Care este a
asea soluie?
(4p.)
a. catei
b. actie
d. catie
c. actei

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.
Se consider subprogramul f void f(int i)
definit alaturat. Ce se afieaz la {
if(i<=5){
apelul f(1)?
cout<<i<< ;| printf(%d ,i);
f(i+1);
(6p.)
cout<<i/2<< ;| printf(%d ,i/2);
}
}
3.

Se consider subprogramul inv, care primete prin intermediul primului parametru a un


numr natural, cu minimum dou cifre i maximum 8 cifre, i furnizeaz prin intermediul
celui de-al doilea parametru, b, valoarea numrului natural format cu aceleai cifre ca i a,
considerate n ordine invers. De exemplu, pentru a=3805, dup apel b va avea valoarea
5083., iar dac a=3800, dup apel b va avea valoarea 83.
a) Scriei definiia complet a subprogramului inv.

(4p.)

b) Scriei un program C/C++ care citete de la tastatur un numr natural n de minimum


dou i maximum 8 cifre i afieaz pe ecran un numr palindrom cu valoarea cea mai
apropiat de valoarea lui n citit. n cazul n care exist dou astfel de numere, se va afia
cel mai mic dintre ele. Se vor folosi apeluri utile ale subprogramului inv.
Spunem c un numr natural x este palindrom dac numrul format din cifrele lui x
considerate de la stnga ctre dreapta este acelai cu numrul format din cifrele lui x
considerate de la dreapta ctre stnga.
Exemplu: dac n=18, atunci se afieaz valoarea 22, dac n=126, atunci se afieaz
121, iar dac a=33, atunci se afieaz 33.
(6p.)
4.

Fiierul text date.in conine pe prima linie un numr natural nenul n (n100), iar pe a
doua linie un ir de n numere naturale nenule distincte, separate prin cte un spaiu,
fiecare numr avnd maximum 8 cifre.
a) Scriei un program C/C++ care citete numerele din fiier i determin cte dintre
componentele irului citit pot fi scrise ca sum a altor dou numere din acelai ir.
Rezultatul obinut se va afia pe ecran. n cazul n care nu exist niciun astfel de element,
se va afia valoarea 0.
Exemplu: dac fiierul date.in conine
6
1 10 25 2 15 3
atunci se va afia valoarea 2 (deoarece 25=10+15, 3=1+2).

(8p.)

b) Descriei pe scurt, n limbaj natural, metoda de rezolvare.

(2p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 055


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking se genereaz toate matricele ptratice de ordinul 4 ale cror
elemente aparin mulimii {0,1}, cu proprietatea c pe fiecare linie i pe fiecare coloan
exist o singur valoare 1. Primele 4 soluii generate sunt, n aceast ordine:

1 0 0 0
1 0 0 0
0 1 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 1
0 0 1 0
Care este a opta soluie?
a. 0 1 0 0
b. 0 1 0 0
1 0 0 0
1 0 0 0
0 0 0 1
0 0 1 0
0 0 1 0
0 0 0 1

1
0
0
0

0
0
1
0

0
1
0
0

0
0
0
1

c. 0
0
1
0

1
0
0
0

0
1
0
0

1
0
0
0

0
0
0
1

0
1
0
0

0
0
1
0
(4p.)

0
0
0
1

d. 0
1
0
0

0
0
1
0

1
0
0
0

0
0
0
1

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


int f(int n)
2.
Se consider subprogramul f, definit alturat.
{ if (n>20) return 0;
a) Ce valoare are f(25)?
else return 5+f(n+5);
b) Dar expresia f(1)+f(5)+f(15)?
(6p.)
}
3.

Se consider subprogramul cifre, care primete prin intermediul primului parametru, a, un


numr natural cu maximum 8 cifre nenule i returneaz, prin intermediul celui de-al doilea
parametrul b, cel mai mic numr care se poate forma cu toate cifrele distincte ale lui a.
a) Scriei definiia complet a subprogramului cifre.

(4p.)

b) Se consider fiierul text date.in ce conine pe prima linie un numr natural nenul n
(n100), iar pe a doua linie n numere naturale, separate prin cte un spaiu, fiecare numr
avnd maximum 8 cifre nenule. Scriei un program C/C++ care citete toate numerele din
fiierul text date.in i afieaz pe ecran, desprite prin cte un spaiu, numerele situate
pe a doua linie a fiierului, formate numai din cifre distincte ordonate strict cresctor,
folosind apeluri utile ale subprogramului cifre. n cazul n care nu exist niciun astfel de
numr se va afia valoarea 0.
Exemplu: dac fiierul date.in are coninutul 6
alturat, atunci se vor afia numerele: 16 269 (6p.) 16 175 333 242477 321 269
4.

Scriei un program C/C++ care citete de la tastatur un numr natural nenul n (n100)
i 2*n numere naturale de maximum 3 cifre; primele n reprezint elementele tabloului
unidimensional a, iar urmtoarele n elementele tabloului unidimensional b; fiecare tablou
are elementele numerotate ncepnd de la 1. Programul construieste n memorie i
afieaz pe ecran, cu spaii ntre ele, cele n elemente ale unui tablou unidimensional c, n
care orice element ci (1in) se obine conform definiiei urmtoare:
ci =

ai concatenat cu bi, dac ai<bi


bi concatenat cu ai, altfel

Exemplu: dac se citesc n=3, a=(12,123,345) i b=(1,234,15), atunci se afieaz


elementele tabloului c astfel:
112

123234

15345

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(10p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 056


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
a.
c.

Pentru a genera toate numerele naturale cu exact 4 cifre i care au cifrele n ordine strict
descresctoare, se poate utiliza un algoritm echivalent cu cel pentru generarea:
(4p.)
aranjamentelor de 4 obiecte luate cte 10 b.
combinrilor de 10 obiecte luate cte 4
d.
permutrilor a 10 obiecte
permutrilor a 4 obiecte

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


int f(int n,int c)
{
if(n==0)return 0;
if(n%10==c)
return n%100+f(n/10,c);
return f(n/10,c);
}

2.

Se consider subprogramul f, definit


alturat. Ce valoare are f(12,3)? Dar
f(21114,1)?
(6p.)

3.

Fiierul text numere.txt conine, pe o singur linie, cel mult 1000 de numere naturale
nenule cu cel mult 4 cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un
program C/C++ care citete toate numerele din fiier i scrie pe ecran toate numerele pare
citite, ordonate cresctor. Dac fiierul numere.txt nu conine niciun numr par, atunci se
va afia pe ecran mesajul nu exista.
Exemplu: dac fiierul numere.txt conine numerele 2 3 1 4 7 2 5 8 6, atunci pe
ecran se va afia: 2 2 4 6 8
(10p.)

4.

Se consider subprogramele
prim, care primete prin intermediul unicului su parametrului x un numr natural nenul
de cel mult 4 cifre i returneaz valoarea 1 dac x este un numr prim i 0 n caz contrar;
numar, care primete prin intermediul parametrului x un numr natural nenul de cel mult
4 cifre i furnizeaz prin intermediul parametrului nrp numrul de numere prime mai mici
dect x.
a) Scriei numai antetul subprogramului prim i definiia complet a subprogramului
numar.
(6p.)
b) Scriei un programul C/C++ n care se citesc de la tastatur dou numere naturale
nenule de cel mult 4 cifre, a i b (a<b), i, prin apeluri utile ale subprogramului numar, se
verific dac intervalul nchis [a,b] conine cel puin un numr prim. Programul va afia pe
ecran, n caz afirmativ, mesajul DA, iar n caz contrar, mesajul NU.
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 057


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se utilizeaz metoda backtracking pentru a genera n ordine lexicografic toate cuvintele de


cte patru litere din mulimea {d,a,n,s}, astfel nct n niciun cuvnt s nu existe dou litere
alturate identice. tiind c primele trei cuvinte generate sunt, n ordine, adad, adan i adas,
care va fi ultimul cuvnt obinut?
(4p.)
a. snns
b. nsns
c. snsn
d. dans

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


void f(int x)
{
if(x) {
if(x%3==0){
cout<<3; | printf("3");
f(x/3);
}
else{
f(x/3);
cout<<x%3; | printf("%d",x%3);
}
}
}

2.

Se consider subprogramul f,
definit alturat. Ce se va afia la
apelul f(38);?
(6p.)

3.

Fiierul text INTRARE.TXT conine, pe o singur linie, cel mult 100 de numere naturale
nenule de cel mult patru cifre fiecare, numerele fiind separate prin cte un spaiu. Scriei un
program C/C++ care citete numerele din fiier i scrie n fiierul text IESIRE.TXT, n
ordine cresctoare, toate valorile distincte obinute ca sum de dou elemente distincte
aflate pe prima linie a fiierului INTRARE.TXT.
Exemplu:
INTRARE.TXT
IESIRE.TXT
1 4 3 2
3 4 5 6 7
(10p.)

4.

Se consider subprogramul multiplu, cu doi parametri, care:


primete prin intermediul parametrilor a i k dou numere ntregi de cel mult 4 cifre;
returneaz cel mai mic multiplu al lui k mai mare sau egal cu a.
a) Scriei numai antetul subprogramului multiplu.

(4p.)

b) Scriei declarrile de date i programul principal C/C++ care citete de la tastatur trei
numere naturale nenule x, y, z, de cel mult 4 cifre fiecare, (xy), i care, prin apeluri utile
ale subprogramului multiplu, verific dac intervalul [x,y] conine cel puin un multiplu
al lui z. Programul va afia pe ecran, n caz afirmativ, mesajul DA, iar n caz contrar
mesajul NU.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 058


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se utilizeaz metoda backtracking pentru a genera n ordine lexicografic toate cuvintele de


cte trei litere distincte din mulimea {d,a,n,s}. Care este cel de-al treilea cuvnt obinut?
(4p.)
a. ads
b. ans
c. dan
d. and

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


int f(int n,int c){
if(n==0)
return 0;
if(n%10==c)
return f(n/10,c)*10+c;
return f(n/10,c);
}

2.

Se consider subprogramul f, definit


alturat. Ce valoare are f(88,1)? Dar
f(3713,3)?
(6p.)

3.

Fiierul text BAC.TXT conine, pe o singur linie, cel puin 3 i cel mult 100 de numere
naturale nenule distincte de cel mult 4 cifre fiecare, numerele fiind separate prin cte un
spaiu. Scriei un program C/C++ care citete toate numerele din fiierul BAC.TXT i scrie
pe ecran, n ordine descresctoare, cele mai mici 3 numere citite.
Exemplu: dac fiierul BAC.TXT conine numerele 1017 48 310 5710 162, atunci se
va afia: 310 162 48
(10p.)

4.

Se consider subprogramul divizor, care:


primete prin intermediul parametrului a un numr natural strict mai mare dect 1, de cel
mult 4 cifre;
furnizeaz prin intermediul parametrului d cel mai mare divizor al lui a strict mai mic dect
a.
a) Scriei numai antetul subprogramului divizor.

(4p.)

b) Scriei declarrile de date i programul principal C/C++ care citete de la tastatur un


numr natural nenul x, de cel mult 4 cifre i, prin apeluri utile ale subprogramului divizor,
verific dac x este numr prim. Programul va afia pe ecran n caz afirmativ mesajul DA, iar
n caz contrar mesajul NU.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 059


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se utilizeaz metoda backtracking pentru a genera n ordine lexicografic toate cuvintele


care conin toate literele din mulimea {a,m,i,c}, astfel nct fiecare liter s apar exact o
dat ntr-un cuvnt. Cte soluii sunt generate dup cuvntul amic i nainte de cuvntul
cami?
(4p.)
6
4
1
3
a.
b.
c.
d.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul f, definit int f(int a,int b)


alturat. Ce valoare are f(12,5)? Dar {
if(a<10)
f(261,31)?
(6p.)
return b;
return f(a/10,b)*10+b+1;
}

3.

Fiierul text bac.txt conine, pe o singur linie, cel puin 3 i cel mult 100 de numere
naturale nenule distincte de cel mult 4 cifre fiecare, numerele fiind separate prin cte un
spaiu. Scriei un program C/C++ care citete numerele din fiier i scrie pe ecran ultima
cifr a produsului celor mai mari 3 numere citite.
Exemplu: dac fiierul bac.txt conine numerele:
1017 48 312 5742 162
atunci se va afia: 8 (ultima cifr a produsului numerelor 1017, 5742, 312)
(10p.)

4.

Se consider subprogramul divizor, care:


primete prin intermediul parametrului, a, un numr natural nenul de cel mult 4 cifre,
strict mai mare ca 1;
furnizeaz prin intermediul parametrului d, cel mai mic divizor al lui a strict mai mare
dect 1.
a) Scriei numai antetul subprogramului divizor.

(4p.)

b) Scriei declarrile de date i programul principal C/C++ care citete de la tastatur un


numr natural x (x>1), i, prin apeluri utile ale subprogramului divizor, verific dac x
este numr prim. Programul va afia pe ecran, n caz afirmativ, mesajul DA, iar n caz
contrar mesajul NU.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 060


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se utilizeaz metoda backtracking pentru a genera toate cuvintele care conin toate literele din
mulimea {i,n,f,o}, astfel nct fiecare liter s apar exact o dat ntr-un cuvnt i literele n
i o s nu se afle pe poziii vecine. tiind c primul cuvnt generat este info, iar al treilea, al
patrulea i al cincilea sunt nifo, niof, nfio care este cel de-al doilea cuvnt obinut?
(4p.)
a. iofn
b. inof
c. ionf
d. niof

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


Se consider subprogramul f, definit int f(int a,int b)
2.
alturat. Ce valoare are f(3,13)? Dar {
f(1000,2009)?
(6p.)
if(2*a>=b)
return 0;
if(b%a==0)
return b-a;
return f(a+1,b-1);
}
3.

Fiierul text bac.txt conine, pe prima sa linie, 100 de numere naturale de cel mult 4 cifre
fiecare, numerele fiind ordonate cresctor i separate prin cte un spaiu, iar pe a doua
linie un singur numr natural x, cu cel mult 4 cifre. Scriei un program C/C++ care citete
toate numerele din fiier i verific dac x se afl n irul celor 100 de numere aflate pe
prima linie a fiierului. n caz afirmativ, se va afia pe ecran mesajul DA, altfel se va afia
mesajul NU.
Exemple: dac fiierul bac.txt conine:
17 38 40 45 50 51 52 53 54 55 ... 145
52
atunci se va afia: DA ;
dac fiierul bac.txt conine:
2 11 15 16 20 25 30 35 40 ... 495
33
atunci se va afia: NU.
(10p.)

4.

Se consider subprogramul radical, care:


primete prin intermediul parametrului a, un numr natural nenul de cel mult 4 cifre;
furnizeaz prin intermediul parametrului x cel mai mare numr natural cu proprietatea
c x2 este mai mic sau egal cu a; de exemplu, dac a=20, subprogramul va furniza prin
x valoarea 4.
a) Scriei numai antetul subprogramului radical.

(4p.)

b) Scriei declarrile de date i programul principal C/C++ care citete de la tastatur un


numr natural nenul de cel mult 4 cifre, n, i prin apeluri utile ale subprogramului radical,
verific dac n este ptrat perfect. Programul va afia pe ecran n caz afirmativ mesajul DA,
iar n caz contrar mesajul NU.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 061


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Generarea matricelor ptratice de ordinul n, cu elemente 0 i 1, cu proprietatea c pe
fiecare linie i pe fiecare coloan exist un singur element egal cu 1, se poate realiza
utiliznd metoda backtracking. Algoritmul utilizat este echivalent cu algoritmul de generare
a:
(4p.)
a. combinrilor
b. permutrilor
c. aranjamentelor
d. produsului
cartezian

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

3.

int f(int x)
Se consider tabloul unidimensional a definit
global, ce memoreaz elementele a1=12, a2=35, {if(x>=1)
return (a[x]+f(x-1))%10;
a3=2, a4=8 i subprogramul f, definit alturat. Ce
else
valoare are f(1)? Dar f(4)?
(6p.)
return 0;
}
Subprogramul cifra primete prin parametrul x un numr real nenul pozitiv i furnizeaz
prin parametrul y valoarea cifrei unitilor prii ntregi a lui x.
Exemplu: dac x=34.567, dup apel y=4.
a) Scriei definiia complet a subprogramului cifra.

(6p.)

b) Scriei un program C/C++ care citete de la tastatur dou numere reale cu cel mult dou
zecimale, numere reprezentnd mediile semestriale obinute de un elev. Programul stabilete,
folosind apeluri utile ale subprogramului cifra, dac cele dou medii citite se afl n aceeai
categorie de medii sau nu. Precizm c orice medie, n funcie de intervalul n care se
ncadreaz, face parte din una dintre categoriile: [3,3.99], [4,4.99], [5,5.99],
[6,6.99], [7,7.99], [8,8.99] sau [9,10]. n cazul n care ambele medii fac parte din
aceeai categorie, programul va afia mesajul Da, altfel va afia mesajul Nu.
(4p.)
4.

n fiierul text.in se afl un text scris pe mai multe linii, pe fiecare linie fiind caractere
diverse: litere mici ale alfabetului englez, cifre, spaii i semne de punctuaie. Gsii o metod
eficient din punctul de vedere al timpului de executare i al gestionrii memoriei ce permite
afiarea celor mai frecvente perechi de vocale alturate din text. Menionm c vocalele
sunt: a, e, i, o i u.
De exemplu, dac text.in conine textul:
Aleea ce strabate valea
e-o unduire de pietris scanteietor,
De-aceea nu stii daca zboara sau doar inoata in unde aurii
cele mai frecvente perechi de vocale ntlnite n acest text sunt: ea i oa (ele apar de 3 ori,
spre deosebire de alte perechi de vocale alturate care apar de mai puine ori).
a) Descriei succint, n limbaj natural, metoda de rezolvare aleas, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
b) Scriei programul C/C++ corespunztor metodei descrise la cerina a.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 062


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking pentru afiarea tuturor modalitilor de descompunere a unui


numr natural ca o sum de numere naturale nenule, pentru n=3 se obin, n ordine,
soluiile: 1+1+1; 1+2; 2+1; 3. Ordinea de scriere a termenilor dintr-o descompunere este
semnificativ. Folosind aceeai metod pentru n=10, care este soluia generat imediat
dup 1+1+3+5?
(4p.)
a. 1+1+4+1+1+1+1
b. 1+1+7+1
c. 1+2+7
d. 1+1+4+4

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


Considerm subprogramul f, definit alturat. Care va void f(int n,int &a)
2.
fi valoarea variabilei globale
x dup apelul {int c;
f(4962,x), dac nainte de apel, x are valoarea 0? if(n!=0){
c=n%10;
Dar dac nainte de apel x are valoarea 52?
(6p.)
if(a<c) a=c;
f(n/10,a);
}
}
3.

Scriei definiia complet a unui subprogram fibo cu doi parametri, n i v, care primete
prin intermediul parametrului n un numr natural (1<n<30) i returneaz prin intermediul
parametrului v un tablou unidimensional care conine primii n termeni impari ai irului lui
Fibonacci (amintim c irul lui Fibonacci este: 1,1,2,3,5,8,13,21,).
(10p.)

4.

a) Fiierul date.in conine un ir de cel mult 10000 numere naturale (printre care cel
puin un numr par i cel puin un numr impar), cu cel mult 2 cifre fiecare, separate prin
cte un spaiu. Scriei un program C/C++ care citete numerele din fiierul date.in i
scrie n fiierul text date.out valorile distincte citite, separate prin cte un spaiu,
respectndu-se regula: pe prima linie vor fi scrise numerele impare n ordine cresctoare,
iar pe linia a doua numerele pare, n ordine descresctoare. Alegei o metod eficient din
punctul de vedere al timpului de executare.
(6p.)
Exemplu: dac pe prima linie a fiierului date.in se afl numerele:
75 12 3 3 18 75 1 3
atunci fiierul date.out va conine:
1 3 75
18 12
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 063


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se genereaz, prin metoda backtracking, toate partiiile mulimii A={1,2,3} obinndu-se


urmtoarele soluii: {1}{2}{3}; {1}{2,3}; {1,3}{2}; {1,2}{3}; {1,2,3}. Se observ
c dintre acestea, prima soluie e alctuit din exact trei submulimi. Dac se folosete
aceeai metod pentru a genera partiiile mulimii {1,2,3,4} stabilii cte dintre soluiile
generate vor fi alctuite din exact trei submulimi.
(4p.)
a. 3
b. 12
c. 6
d. 5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


Se consider tabloul unidimensional a definit int f(int b,int i)
2.
global, ce memoreaz elementele a1=1, a2=2, {if(i>=1)
a3=0 i subprogramul f, definit alturat. Ce
return f(b,i-1)*b+a[i];
valoare are f(2,1)? Dar f(3,3)?
(6p.)
else return 0;
}
3.

Subprogramul verif primete prin singurul su parametru, x, un numr natural nenul cu


cel mult 9 cifre i returneaz valoarea 1 dac numrul conine cel puin o secven de 3
cifre impare alturate i 0 n caz contrar.
Exemplu: dac x=7325972 se va returna valoarea 1.
a) Scriei definiia complet a subprogramului verif.

(6p.)

b) Scriei un program C/C++ care citete de la tastatur un numr natural nenul n cu exact
6 cifre i, folosind apeluri utile ale subprogramului verif, verific dac n are primele trei
cifre impare. Programul afieaz pe ecran mesajul Da n caz afirmativ i mesajul Nu n caz
contrar.
Exemple: dac se citete n=132567 se va afia mesajul Nu, iar dac n=979243, se va
afia mesajul Da.
(4p.)
4.

Pentru un ir de numere naturale, numim nod al irului un termen din ir care are doi
vecini, termenul precedent i termenul urmtor din ir, i valoarea termenului respectiv este
strict mai mic dect suma valorilor celor doi vecini ai si.
a) Fiierul text date.in conine un ir de cel puin dou i cel mult 10000 de numere
naturale avnd maximum 6 cifre fiecare, numere separate prin cte un spaiu. Scriei un
program C/C++ care citete toate numerele din fiier i afieaz numrul de noduri ale
irului citit, folosind un algoritm eficient din punctul de vedere al memoriei utilizate.
(6p.)
Exemplu: dac fiierul date.in are urmtorul coninut:
51 20 100 43 43 618 5000 31 2020 114 116 4
atunci pe ecran se afieaz 7 (cele apte numere subliniate reprezint noduri ai irului)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 064


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se genereaz, prin metoda backtracking, toate modalitile de aezare a numerelor


naturale de la 1 la 5, astfel nct oricare 2 numere consecutive s nu se afle pe poziii
alturate. Dac primele dou soluii sunt: (1,3,5,2,4) i (1,4,2,5,3), care este prima
soluie generat n care primul numr este 4?
(4 p.)
a. (4, 1, 3, 2, 5)
b. (4,2,5,1, 3)
c. (4, 3, 5, 3, 1)
d. (4, 1, 3, 5, 2)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul f, definit


alturat. Ce se va afia n urma apelului
f(5,0);?
(6p.)

void f(int i,int j)


{ if(j<=9) f(i,j+1);
printf(%d*%d=%d\n,i,j,i*j);/
cout<<i<<*<<j<<=<<i*j<<endl;
}

3.

Subprogramul diviz primete prin intermediul parametrului n un numr natural nenul


(2n200), iar prin intermediul parametrului a, un tablou unidimensional care conine n
valori naturale nenule, fiecare dintre acestea avnd cel mult patru cifre. Elementele tabloului
sunt numerotate de la 1 la n.
Subprogramul returneaz o valoare egal cu numrul de perechi (ai,aj), 1i<jn, n
care ai este divizor al lui aj , sau aj este divizor al lui ai.
Scriei definiia complet a subprogramului diviz, n limbajul C/C++.
Exemplu: pentru n=5 i a=(4,8,3,9,4) subprogramul returneaz valoarea 4.
(10p.)

4.

Fiierul text date.in conine pe prima linie , separate prin cte un spaiu, cel mult 1000 de
numere naturale, fiecare dintre ele avnd maximum 9 cifre.
a) Scriei un program C/C++ care citete numerele din fiierul date.txt i determin cea
mai lung secven ordonat strict descresctor, format din valori citite consecutiv din
fiier. Numerele din secvena gsit vor fi afiate pe ecran, pe o linie, separate prin cte un
spaiu. Dac sunt mai multe secvene care respect condiia impus, se va afia doar prima
dintre acestea. Alegei o metod de rezolvare eficient din punctul de vedere al timpului de
executare.
Exemplu: dac fiierul date.in conine
pe ecran se afieaz:
5 2 19 4 3 6 3 2 1 0 8
6 3 2 1 0
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
( 4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 065


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se genereaz, prin metoda backtracking, toate modalitile de aezare a numerelor


naturale de la 1 la 5 astfel nct oricare dou numere consecutive s nu se afle pe poziii
alturate. Dac primele dou soluii sunt: (1,3,5,2,4) i (1,4,2,5,3), care este prima
soluie generat care ncepe cu 2?
(4p.)
a. (2, 4, 1, 3, 5)
b. (2, 5, 4, 3, 1)
c. (2, 4, 1, 3, 1)
d. (2, 3, 5, 4, 1)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


int f( int &a, int &b)
{ while (a !=b)
if (a>b) a=a-b;
else b=b-a;
return a;}

2.

Se consider funcia f, definit alturat.


Ce se afieaz ca urmare a executrii secvenei de
mai jos n care variabilele a i b sunt de tip int?
a=4; b=18;
printf(%d,f(a,b));/ cout<<f(a,b);
printf(%d %d,a,b);/ cout<<a<<b;
(6p.)

3.

Subprogramul sfx primete prin singurul su parametru, x, un numr natural din intervalul
[100,2000000000] i returneaz valoarea 1 dac ultimele trei cifre ale numrului sunt n
ordine strict descresctoare sau valoarea 0 n caz contrar.
Exemplu: dac x=24973 se va returna valoarea 1.
a) Scriei definiia complet a subprogramului sfx.

(5p.)

b) Scriei un program C/C++ care citete de la tastatur un numr natural n format din exact
6 cifre i verific, utiliznd apeluri ale subprogramului sfx, dac acest numr are toate cifrele
n ordine strict descresctoare. Programul va afia mesajul Da n caz afirmativ i mesajul Nu
n caz contrar.
Exemplu: dac n=756543 se va afia Nu, iar dac n=976532 se va afia Da.
(5p.)
4.

Pentru un ir de numere naturale, numim pol al irului un termen din ir care are doi vecini,
termenul precedent i termenul urmtor din ir, i valoarea termenului respectiv este strict
mai mare dect valoarea fiecruia dintre cei doi vecini ai si.
a) Fiierul text date.in conine un ir de cel mult 10000 de numere naturale avnd
maximum 6 cifre fiecare, numere separate prin cte un spaiu. Scriei un program C/C++
care citete toate numerele din fiier i afieaz numrul de poli ai irului citit, folosind un
algoritm eficient din punctul de vedere al memoriei utilizate.
(6p.)
Exemplu: dac fiierul date.in are urmtorul coninut:
51 20 100 43 43 618 5000 31 2020 114 116 4
atunci pe ecran se afieaz 4 (cele patru numere subliniate reprezint poli ai irului)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
( 4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 066


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se genereaz n ordine cresctoare, toate numerele naturale de 5 cifre distincte, care se


pot forma cu cifrele 2,3,4,5 i 6. S se precizeze numrul generat imediat naintea i
numrul generat imediat dup secvena urmtoare : 34256, 34265, 34526, 34562 (4p.)

a. 32645 i 34625
c. 32654 i 34625

b. 32654 i 34655
d. 32645 i 34655

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul recursiv definit int functie(int x)


alturat. Ce valoare are functie(1)? Dar {
if (x<=0) return 3 ;
functie(4)?
(6p.)
else return functie(x-3)*4 ;
}

3.

S se scrie n limbajul C/C++ definiia complet a subprogramului calcul, care primete


prin intermediul parametrului n un numr natural nenul (1n10000), iar prin intermediul
parametrului a, un tablou unidimensional care conine n valori naturale, fiecare dintre
aceste valori avnd cel mult 9 cifre. Subprogramul returneaz cel mai mare divizor comun
al elementelor tabloului a.
(10p.)
Exemplu: n urma apelului, pentru n=5 i tabloul unidimensional (12,36,48,6,60) se va
returna 6.

4.

Fiierele text A.TXT i B.TXT conin cel mult 10000 de numere naturale cu cel mult 9
cifre fiecare, scrise fiecare pe cte o linie.
a) Scriei un program C/C++ care citete numerele din cele dou fiiere i, printr-o metod
eficient din punct de vedere al timpului de executare i al spaiului de memorie utilizat,
afieaz pe ecran cte dintre numerele din fiierul A.TXT sunt strict mai mici dect toate
numerele memorate n fiierul B.TXT.
(6p.)
41111
91111
Exemplu:
dac
fiierul
iar fiierul B.TXT are coninutul
81111 alturat:
91111
A.TXT are coninutul alturat,
11111
61111
91111
91111
51111
91111
111111
81111
31111
61111
431111
91111
61111
201111
atunci programul va afia valoarea 4, deoarece 41111, 11111, 51111, 31111 sunt mai
mici dect toate elementele din fiierul B.TXT.
b) Descriei succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia.
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 067


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se genereaz n ordine cresctoare, toate numerele naturale de 5 cifre distincte, care se


pot forma cu cifrele 5,6,7,8 i 9. S se precizeze numrul generat imediat naintea i
numrul generat imediat dup secvena urmtoare : 67589,67598,67859,67895.
(4p.)

a. 65987 i 67958

b. 65978 i 67988

c. 65978 i 67958

d. 65987 i 67988

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul recursiv definit int alfa(int u)


alturat. Ce valoare are alfa(6)? Pentru ce {if (u==0) return 3;
else return alfa(u-1)+3*u-2;
valoare a parametrului u, alfa(u) are
}
valoarea 25 ?
(6p.)

3.

S se scrie n limbajul C/C++ definiia complet a subprogramului calcul, care primete


prin intermediul parametrului n un numr natural nenul (1n10000), iar prin intermediul
parametrului a, un tablou unidimensional care conine n valori naturale, fiecare dintre
aceste valori avnd cel mult 9 cifre. Subprogramul returneaz numrul de numere prime
din tablou.
(10p.)
Exemplu: pentru n=5 i tabloul unidimensional (12,37,43,6,71) n urma apelului se va
returna 3.

4.

Fiierul text NUMERE.TXT conine pe prima linie un numr natural n (1n10000) i pe a


doua linie un ir cresctor de n numere naturale, fiecare avnd cel mult 9 cifre. Numerele
de pe a doua linie sunt separate prin cte un spaiu.
a) Scriei un program C/C++ care, utiliznd o metod eficient din punct de vedere al
timpului de executare i al spaiului de memorie, afieaz pe ecran elementele distincte ale
irului aflat pe a doua linie a fiierului.
(6p.)
Exemplu: dac fiierul NUMERE.TXT are 7
coninutul alturat
111 111 111 2111 4111 71111 71111
atunci programul va afia pe ecran 111 2111 4111 71111.
b) Descriei succint, n limbaj natural, metoda utilizat la punctul a), justificnd eficiena
acesteia.
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 068


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Se utilizeaz metoda backtracking pentru a genera toate submulimile cu 4 elemente ale
mulimii {1,2,3,4,5,6}. Numrul de submulimi generate este:
(4p.)
b. 35
c. 5
d. 15
a. 30

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul void gama(int n)


recursiv definit alturat. Ce valori {int i;
vor fi afiate pe ecran n urma if(n>=3)
{for(i=3;i<=n;i++)
apelului gama(6);?
(6p.)
printf(%d ,n); | cout<<n<< ;
gama(n-3);
}
}

3.

a) S se scrie definiia complet a subprogramului calcul, care primete prin intermediul


celor doi parametri ai si dou numere ntregi, n i k (1n100000000 i 1k9), i
returneaz cifra de rang k a numrului n. Rangul unei cifre este numrul su de ordine,
numerotnd cifrele de la dreapta la stnga; cifra unitilor avnd rangul 1. Dac numrul k
este mai mare dect numrul de cifre ale lui n, atunci funcia returneaz valoarea -1.
Exemplu: dac n=9243 i k=3, n urma apelului se va returna 2.
(5p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n cu cel mult 8
cifre. Programul va verifica, utiliznd apeluri ale subprogramului calcul, dac orice cifr a
lui n are rangul cifrei mai mare sau egal cu valoarea cifrei respective i va afia mesajul Da n
caz afirmativ i mesajul Nu n caz contrar.
Exemplu : pentru n=4160 se va afia Nu.
(5p.)
4 3 2 1
rang
4 1 6 0
cifr

4.

Fiierul text SIR.TXT conine pe prima linie un numr natural n (1n10000) i pe a


doua linie, separate prin spaii, un ir cresctor de n numere naturale cu cel mult 9 cifre
fiecare.
Numim platou ntr-un ir de valori o secven de elemente identice situate pe poziii
alturate. Lungimea unui platou este egal cu numrul de elemente care l formeaz.
a) Scriei un program C/C++ care citete valorile din fiier i, printr-o metod eficient din
punct de vedere al timpului de executare i al spaiului de memorie utilizat afieaz pe
ecran, separate printr-un spaiu, lungimea maxim a unui platou, precum i valoarea care
formeaz platoul. n cazul n care sunt mai multe platouri de aceeai lungime se va afia
valoarea cea mai mare care formeaz unul dintre aceste platouri.
(6p.)
Exemplu: dac fiierul SIR.TXT 10
are coninutul alturat,
11 211 211 211 328 400 400 1201 1201 1201
atunci programul va afia pe ecran 3 1201.
b) Descriei succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia.
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 069


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Construim anagramele unui cuvnt c1c2c3c4 prin generarea n ordine lexicografic a


permutrilor indicilor literelor cuvntului i obinem c1c2c3c4 c1c2c4c3 c1c3c2c4 c4c3c1c2
c4c3c2c1. Pentru anagramele cuvntului pateu, dup irul paetu, paeut, paute cuvintele
imediat urmtoare sunt:
(4p.)
a. pauet i ptaeu
b. ptaeu i ptaue
c. pauet i ptaue

d. ptaeu i patue

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul recursiv void beta(int n)


definit alturat. Ce valori vor fi {if (n!=1)
{printf(%d ,n); | cout<<n<< ;
afiate pe ecran n urma apelului
if (n%3==0) beta(n/3);
beta(15);?
(6p.)
else beta(2*n-1);}
else printf(%d,1); | cout<<1;
}

3.

a) S se scrie definiia complet a subprogramului calcul, care primete prin intermediul


parametrului ntreg n un numr natural de cel mult 9 cifre i returneaz valoarea absolut a
diferenei dintre numrul de cifre pare i numrul de cifre impare coninute de n.
Exemplu: dac n=92465, n urma apelului se va returna valoarea 1 (2 cifre impare, 3 cifre
pare).
(5p.)
b) S se scrie n limbajul C/C++ un program care citete de la tastatur un numr natural n
de cel mult 7 cifre i, utiliznd apeluri ale subprogramului calcul, determin i afieaz pe
ecran cel mai mic numr natural m, mn, care are tot attea cifre pare cte cifre impare.
Exemple: dac se citete n=5513, atunci se afieaz m=5520, iar dac se citete n=311,
atunci se afieaz m=1001.
(5p.)

4.

Fiierul text NUMERE.TXT conine pe prima linie un numr natural n (1n10000) i pe a


doua linie, n numere naturale cu cel mult 9 cifre fiecare. Aceste numere sunt dispuse n
ordine cresctoare i separate ntre ele prin cte un spaiu.
a) Scriei un program C/C++ care citete valorile din fiier i, printr-o metod eficient din
punct de vedere al timpului de executare, afieaz pe ecran, separate prin cte un spaiu, n
ordine cresctoare, numerele pare de pe a doua linie a fiierului, urmate de cele impare n
ordine descresctoare.
(6p.)
Exemplu: dac fiierul NUMERE.TXT are 6
coninutul alturat
212 412 5111 71113 81112 101112
atunci programul va afia pe ecran 212 412 81112 101112 71113 5111
b) Descriei succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia.
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 070


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Pentru rezolvarea crei probleme dintre cele enumerate mai jos se poate utiliza metoda
backtracking ?
(4p.)
a. determinarea reuniunii a 3 mulimi
b. determinarea tuturor divizorilor unui
numr din 3 cifre
c. determinarea tuturor elementelor mai mici
dect 30000 din irul lui Fibonacci

d. determinarea tuturor variantelor n care


se pot genera steagurile cu 3 culori (din
mulimea: rou, galben, albastru i
alb), avnd la mijloc culoarea galben

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul recursiv definit alturat. int bac(int u, int x)


Ce valoare are expresia bac(10,4)? Care este cea {if (u<x)return 0;
mai mic valoare de 2 cifre a lui u pentru care funcia if (x==u)return 1;
if (u%x==0)return 0;
bac(u,2) are valoarea 1?
(6p.)
return bac(u,x+1);
}

3.

S se scrie n limbajul C/C++ definiia complet a subprogramului calcul, care primete


prin parametrul n un numr natural nenul de cel mult 9 cifre i furnizeaz prin parametrul x
numrul obinut prin alturarea cifrelor pare ale lui n considerate de la dreapta ctre
stnga. Dac n nu conine nicio cifr par, x primete valoarea 0.
(10p.)
Exemplu: n urma apelului calcul(9278,x), x primete valoarea 82.

4.

Fiierul text NUMERE.TXT conine pe prima linie un numr natural n (1n10000) i pe a


doua linie, n numere naturale cu cel mult 9 cifre fiecare, numere nu neaprat distincte.
Aceste numere sunt dispuse n ordine cresctoare i separate ntre ele prin cte un
spaiu.
a) Scriei un program C/C++ care citete valorile din fiier i, printr-o metod eficient din
punct de vedere al timpului de executare i al spaiului de memorie utilizat, afieaz pe
ecran, cu un spaiu ntre ele, valoarea care apare de cele mai multe ori n fiier i de cte
ori apare ea. Dac exist mai multe valori care apar de un numr maxim de ori, se va afia
cea mai mic dintre ele.
(6p.)
Exemplu:
dac
fiierul 8
NUMERE.TXT are coninutul 711 711 711 11111 11111 11111 191111 231111
alturat,
atunci programul va afia pe ecran 711 3.
b) Descriei succint, n limbaj natural, metoda utilizat la punctul a, justificnd eficiena
acesteia.
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 071


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se genereaz n ordine cresctoare toate numerele de exact 4 cifre care se pot forma cu
elementele mulimii {0,1,2,3,4}. Primele 8 soluii generate sunt, n ordine: 1000, 1001,
1002, 1003, 1004, 1010, 1011, 1012. Care sunt primele trei numere ce se vor genera
imediat dup numrul 3443?
(4p.)
a. 4000,4001,4002
b. 3444,4443,4444
d. 3444,4000,4001
c. 3444,4444,4000

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Ce valoare va avea variabila ntreag x, n


urma apelului F(1,x), tiind c, nainte de
apel,
variabila x are valoarea 0, iar
subprogramul F este definit alturat?
(6p.)

3.

void F(int i, int &x)


{ if (i <= 10)
{
if(i % 2) x = x + 2;
else
x = x 1;
F(i + 1, x);
}
}

Un numr natural se numete palindrom dac numrul citit de la stnga la dreapta este egal
cu numrul citit de la dreapta la stnga.
a) Scriei definiia complet a subprogramului Palindrom care primete prin intermediul
parametrului n un numr natural de cel mult nou cifre i returneaz 1 dac acesta este
palindrom i 0 n caz contrar.
(10p.)
b) Fiierul text NUMERE.IN conine cel mult 100000 numere naturale de cel mult nou cifre
fiecare, numerele fiind desprite prin cte un spaiu. Cel puin unul dintre numere este
palindrom.
Scriei programul C/C++ care citete numerele din fiierul NUMERE.IN i, folosind apeluri
utile ale subprogramului Palindrom determin n mod eficient, din punct de vedere al
memoriei utilizate i al timpului de executare, care este cel mai mare numr palindrom citit i
de cte ori apare el n fiierul NUMERE.IN. Programul scrie n fiierul text NUMERE.OUT
numrul astfel determinat precum i numrul de apariii ale acestuia, pe rnduri diferite.
Exemplu: dac NUMERE.IN conine numerele:
23 565 78687 7887 7865 78687 7887 23 78687 98798
atunci NUMERE.OUT va conine:
78687
3

(6p.)

c) Descriei succint, n limbaj natural, metoda de rezolvare folosit la punctul b, explicnd n


ce const eficiena ei (3 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 072


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se genereaz n ordine cresctoare toate numerele de 4 cifre, cu cifre distincte, astfel nct
diferena n valoare absolut dintre prima i ultima, respectiv a doua i a treia cifr este
egal cu 2. Primele 11 soluii generate sunt, n ordine: 1023, 1203, 1243, 1423, 1463,
1573, 1643, 1683, 1753, 1793, 1863. Care dintre urmtoarele numere se va genera
imediat naintea numrului 9317?
(4p.)
a. 9247
b. 9357
c. 9207
d. 8976

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

3.

Scriei ce se va afia n urma


executrii subprogramului alturat,
la apelul F(57);.
(6p.)

void F(int x)
{ if(x != 0)
{ F(x/2);
cout << x%2;
}
}

printf(%d, x%2);

a) Scriei definiia complet a subprogramului Ecuatie care primete prin parametrii a, b i


c trei numere ntregi, a 0, de cel mult patru cifre fiecare, reprezentnd coeficienii ecuaiei
de gradul al II-lea: ax 2 +bx+c=0. n funcie de soluiile ecuaiei subprogramul va returna:
cea mai mare dintre soluii dac ecuaia are dou soluii reale distincte, dintre care cel
puin una pozitiv.
una dintre soluii dac ecuaia are dou soluii egale i pozitive.
-32000 n celelalte cazuri.
(10p.)
b) Se consider irul s: 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6, 1, 2,... .
Pentru un numr natural k, 0<k10000, se cere s se determine valoarea elementului ce
se afl pe poziia k n irul s.
Exemplu: pentru k=18 numrul cerut este 3.
Scriei un program C/C++ care citete de la tastatur valoarea numrului natural k i, prin
apeluri utile ale funciei Ecuatie, determin valoarea elementului ce se afl pe poziia k n
irul s, folosind un algoritm eficient din punctul de vedere al spaiului de memorie alocat i
al timpului de executare. Valoarea astfel determinat se va scrie n fiierul text sir.out.
(6p.)
c) Descriei succint, n limbaj natural, metoda de rezolvare folosit la punctul b, explicnd n
ce const eficiena ei (3 4 rnduri)
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 073


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se genereaz n ordine cresctoare toate numerele de 4 cifre, cu cifre distincte, astfel nct
diferena n valoare absolut dintre ultimele dou cifre ale fiecrui numr generat este egal
cu 2. Primele opt soluii generate sunt, n ordine: 1024, 1035, 1042, 1046, 1053, 1057,
1064, 1068. Care dintre urmtoarele numere se va genera imediat dup numrul 8975?
(4p.)
a. 8979
b. 9013
c. 8957
d. 9024

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

3.

Ce se va afia n urma executrii void F(int x)


subprogramului alturat, la apelul { if(x)
{ F(x/2);
F(56);?
(6p.)
cout << x%10;
}
}

printf(%d,x%10);

a) Scriei definiia complet a subprogramului Cautare, cu trei parametri, n, x i v, care


primete prin parametrul n un numr natural (1n1000), prin parametrul x un tablou
unidimensional format din n componente (numere ntregi de cel mult patru cifre fiecare: x1,
x2, , xn) memorate n ordine cresctoare i prin parametrul v un numr ntreg de cel mult
patru cifre, diferit de oricare dintre elementele tabloului unidimensional x.
Subprogramul va cuta, n mod eficient din punct de vedere al timpului de executare, poziia
pe care ar trebui inserat valoarea v n irul x astfel nct s se obin tot un ir ordonat
cresctor i returneaz aceast poziie.
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
c) Fiierul text sir.in conine cel mult 1000 numere ntregi de maximum patru cifre
fiecare, numerele fiind diferite dou cte dou i desprite prin cte un spaiu.
Scriei un program C/C++ care citete numerele din fiierul sir.in i, folosind apeluri utile
ale subprogramului Cautare, construiete n memorie un tablou unidimensional care va
conine toate numerele din fiierul sir.in ordonate cresctor. Programul scrie n fiierul
text sir.out irul obinut, cte 10 elemente pe un rnd, elementele de pe acelai rnd
fiind desprite printr-un singur spaiu.
Exemplu: dac fiierul sir.in conine numerele: 7 -5 635 -456 0 8 587 -98 65 3 -8
atunci dup executarea programului fiierul sir.out va conine:
-456 -98 -8 -5 0 3 7 8 65 587
635

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(10p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar
Subiectul III (30 de puncte) - Varianta 074
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Prin metoda backtracking se genereaz toate anagramele (cuvintele obinute prin
permutarea literelor) unui cuvnt dat. tiind c se aplic aceast metod pentru cuvntul
solar, precizai cte cuvinte se vor genera astfel nct prima i ultima liter din fiecare
cuvnt generat s fie vocal (sunt considerate vocale caracterele a, e, i , o, u)?
(4p.)
b. 6
c. 10
d. 12
a. 24

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

int Suma(int x)
Se consider funcia Suma, definit
alturat. Ce valoare are Suma(3)? Dar { if(x == 1 ) return 0;
if(x%2==0) return Suma(x-1)+(x-1)*x;
Suma(8)?
(6p.)
return Suma(x-1)-(x-1)*x;
}

3.

a) Scriei definiia complet a subprogramului Cifra, cu doi parametri, n i x, care primete


prin intermediul parametrului n un numr natural de cel mult nou cifre i furnizeaz prin
parametrul x cea mai mare cifr a numrului transmis prin parametrul n.
(6p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n, n<1000000000,
i, utiliznd apeluri utile ale subprogramului Cifra, afieaz pe ecran mesajul Da n cazul n
care numrul citit este format doar din cifre aparinnd mulimii {0,1,2,3,4} i afieaz
mesajul Nu n caz contrar.
(4p.)

4.

Se numete numr mare orice numr natural care are mai mult de nou cifre.
a) Scriei un program C/C++ care citete de pe prima linie a fiierului text NUMERE.IN un
numr natural n (10n<1000), iar de pe a doua linie n cifre desprite prin cte un spaiu,
dintre care cel puin una nenul, i afieaz pe ecran cel mai mic numr mare format cu
toate cele n cifre din fiier. Alegei o metod eficient din punct de vedere al utilizrii memoriei.
(6p.)
b) Descriei succint n limbaj natural metoda de rezolvare folosit explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
Exemplu: dac fiierul NUMERE.IN conine
10
7 9 4 0 9 0 1 1 8 8
atunci se va afia pe ecran numrul mare :
1001478899

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 075


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Ce valoare are F(2758), pentru int F(int x)
funcia F definit alturat? (4p.) {
if(x == 0) return 0;
if(x%10%2 == 0) return 2 + F(x/10);
return 10 F(x/10);
}
b. 20
c. 12
d. 4
a. 0

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Variabilele i, j i aux sunt de tip ntreg, iar for(int i = 0; i < 4; i++)


for(int j = i + 1; j< 6; j++)
nainte de prelucrare elementele tabloului
if(x[i] > x[j])
unidimensional x sunt urmatoarele: x0=10,
{
aux = x[i];
x1=5, x2=-6, x3=7, x4=0, x5=-2.
x[i] = x[j];
Ce valori se vor afia n urma executrii
x[j] = aux;
secvenei de program alturate?
(6p.)
}
for(i = 0; i < 6; i++)
cout<<x[i]<< ;
| printf(%d ,x[i]);

3.

a) Scriei definiia complet a funciei UltimaCifra care primete prin cei doi parametri a
i b cte un numr natural (0<a<30000, 0<b<30000), calculeaz n mod eficient din punct
de vedere al timpului de executare i returneaz ultima cifr a numrului ab (a la puterea b).
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri)
(4p.)
c) Fiierul text SIR.IN conine pe prima sa linie un numr natural n (0<n<1001), iar pe
fiecare dintre urmtoarele n linii cte o pereche de numere naturale, xi yi (1in,
xi30000, yi30000).
Scriei programul C/C++ care citete numerele din fiierul SIR.IN i scrie n fiierul text
SIR.OUT ultima cifr a expresiei: x1 + x 2 +...+ x n ,folosind apeluri ale funciei
UltimaCifra.
3
Exemplu: dac fiierul SIR.IN are coninutul alturat, atunci
25 6
SIR.OUT va conine cifra 0.
(10p.)
8 10
1 4589
y1

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

y2

yn

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 076


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Dac se utilizeaz metoda backtracking pentru a genera toate permutrile de 4 obiecte i


primele 5 permutri generate sunt, n aceast ordine, 4 3 2 1, 4 3 1 2, 4 2 3 1, 4 2 1
3, 4 1 3 2, atunci a 6-a permutare este:
(4p.)
a. 3 2 1 4
b. 3 4 2 1
c. 1 4 3 2
d. 4 1 2 3

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru definiia alturat a subprogramului long sub(long n)


sub, scriei ce valoare are sub(3). Dar {if (n!=0)
if(n%2!=0) return n%10*sub(n/10);
sub(132764)?
else return sub(n/10);
(6p.)
else return 1;
}

3.

Scriei definiia complet a unui subprogram s cu trei parametri care primete prin
intermediul parametrului
n un numr natural de maximum 9 cifre, prin intermediul
parametrului c o cifr i furnizeaz prin intermediul parametrului k numrul de cifre ale
numrului n care aparin intervalului [c-1,c+1].
Exemplu: pentru n=1233 i c=3, k va avea valoarea 3, iar pentru n=650 i c=3, k va
avea valoarea 0.
(10p.)

4.

Fiierul BAC.TXT are pe prima linie dou numere naturale n i m (0<n<1000, 0<m<1000)
separate prin cte un spaiu, pe linia a doua n numere ntregi ordonate strict cresctor, iar
pe linia a treia m numere naturale distincte. Numerele din fiier aflate pe linia a doua i a
treia au cel mult 6 cifre fiecare i sunt desprite n cadrul liniei prin cte un spaiu. S se
scrie un program care citete toate numerele din fiier i afieaz pe ecran, desprite prin
cte un spaiu, toate numerele de pe a doua linie a fiierului care apar i pe linia a treia a
acestuia.
Exemplu: dac fiierul are urmtorul coninut:
6 5
2 3 4 5 8 9
4 5 2 11 8
atunci se va afia: 5 2 8 4, nu neaprat n aceast ordine.
a) Descriei n limbaj natural o metod de rezolvare eficient ca timp de executare.

(4p.)

b) Scriei programul C/C++ corespunztor metodei descrise la punctul a).

(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 077


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

La un concurs particip 50 de sportivi mprii n 5 echipe, astfel nct n fiecare echip s


fie cte 10 sportivi. Problema determinrii tuturor grupelor de cte 5 sportivi, cte unul din
fiecare echip, este similar cu generarea tuturor:
(4p.)

a.

elementelor
produsului
cartezian b.
AxAxAxAxA, unde A={1,2,,10}

c.

permutrilor mulimii {1,2,3,4,5}

d.

submulimilor cu 5 elemente ale mulimii


{1,2,,10}
partiiilor mulimii {1,2,,10}

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru definiia alturat a subprogramului int sub(long n)


sub, scriei ce valoare are sub(4). Dar {if (n!=0)
if(n%2!=0)
sub(132764)?
(6p.)
return n%10+sub(n/10);
else return sub(n/10);
else return 0;
}

3.

Scriei un program C/C++ care citete de la tastatur dou numere naturale nenule n i k
(0<n<100, 0<k<4) i apoi n numere reale pozitive care au cel mult 3 cifre la partea
ntreag i cel mult 5 cifre zecimale i afieaz pe ecran numrul de valori reale citite care
au mai mult de k cifre zecimale.
Exemplu: dac pentru n se citete valoarea 5 i pentru k valoarea 2 i apoi irul de
numere reale 6.2 4.234 2 8.13 10.001 pe ecran se va afia valoarea 2.
(10p.)

4.

Fiierul text bac.in conine pe prima sa linie un numr natural n (0<n<10000), iar pe
urmtoarea linie n numere naturale din intervalul [1,100] separate prin cte un spaiu.
Se cere s se citesc din fiier toate numerele i s se afieze pe ecran numrul sau
numerele care apar de cele mai multe ori printre numerele citite de pe a doua linie a
fiierului. Numerele afiate vor fi separate prin cte un spaiu. Alegei un algoritm de
rezolvare eficient att din punctul de vedere al timpului de executare ct i al gestionrii
memoriei. .
Exemplu: dac fiierul bac.in are urmtorul coninut:
12
1 2 2 3 2 9 3 3 9 9 7 1
pe ecran se vor afia valorile 2, 3 i 9, nu neaprat n aceast ordine.
a) Explicai n limbaj natural metoda utilizat justificnd eficiena acesteia (4-6 rnduri) (4p.)
b) Scriei programul C/C++ ce rezolv
descrise la punctul a).

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

problema enunat, corespunztor metodei


(6p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 078


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Un program construiete i afieaz elementele produsului cartezian AxBxC pentru
mulimile A={1,2,3,4}, B={1,2,3}, C={1,2}. Care dintre urmtoarele triplete NU va fi
afiat?
(4p.)
b. (1,3,2)
c. (1,2,3)
d. (2,2,2)
a. (3,2,1)

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru definiia alturat a subprogramului int sub(long n)


sub, scriei ce valoare are sub(4). Dar {if (n!=0)
if(n%2!=0) return 1+sub(n/10);
sub(123986)?
(6p.)
else return sub(n/10);
else return 0;
}

3.

a) Scriei doar antetul unui subprogram prim cu doi parametri, care primete prin
intermediul parametrului n un numr natural cu cel mult patru cifre i returneaz prin
intermediului parametrului p valoarea 1 dac n este prim i 0 n caz contrar.
(2p.)
b) Scriei un program C/C++ care citete de la tastatur un numr natural n (3<n<10000)
i afieaz pe ecran, desprite prin cte un spaiu, primele n numerele prime, folosind
apeluri utile ale subprogramului prim.
(8p.)
Exemplu: pentru n=4 pe ecran vor fi afiate numerele 2 3 5 7

4.

Fiierul text bac.in conine pe prima sa linie un numr natural n (0<n<10000), iar pe
urmtoarea linie n numere naturale din intervalul [1,100]. Se cere s se citesc din fiier
toate numerele i s se afieze pe ecran, n ordine descresctoare, toate numerele care
apar pe a doua linie a fiierului i numrul de apariii ale fiecruia. Dac un numr apare de
mai multe ori, el va fi afiat o singur dat. Fiecare pereche valoare - numr de apariii va
fi afiat pe cte o linie a ecranului, numerele fiind separate printr-un spaiu, ca n exemplu.
Alegei un algoritm de rezolvare eficient din punctul de vedere al timpului de executare.
Exemplu: dac fiierul bac.in are urmtorul coninut:
12
1 2 2 3 2 2 3 3 2 3 2 1
pe ecran se vor afia, n aceast ordine, perechile:
3 4
2 6
1 2
a) Explicai n limbaj natural metoda utilizat justificnd eficiena acesteia (4-6 rnduri) (4p.)
b) Scriei programul C/C++ ce rezolv
descrise la punctul a).

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

problema enunat, corespunztor metodei


(6p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 079


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Problema generrii tuturor codurilor formate din exact 4 cifre nenule, cu toate cifrele
distincte dou cte dou, este similar cu generarea tuturor:
(4p.)
a. aranjamentelor de 9 elemente luate cte
b. permutrilor elementelor unei mulimi cu
4
4 elemente
d. submulimilor cu 4 elemente ale mulimii
c. elementelor
produsului
cartezian
{1,2,3,4,5,6,7,8,9}
AxAxAxA unde A este o mulime cu 9
elemente

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru definiia alturat a subprogramului f, scriei int f(long x)


{ int y,z;
ce valoare are f(8). Dar f(1209986)?
if (x==0) return x;
(6p.)
else {y=x%10;
z=f(x/10);
if(y>z) return y;
else return z;
}
}

3.

Scriei definiia complet a subprogram max, cu trei parametri, a, b, c, care primete prin
intermediul parametrilor a i b dou numere reale cu exact dou cifre la partea ntreag i
exact dou zecimale fiecare. Subprogramul determin cel mai mare numr real dintre
urmtoarele patru valori: a, b i numerele reale obinute din a i b prin interschimbarea
prii ntregi cu partea fracionar n cadrul aceluiai numr. Aceast valoare este furnizat
prin intermediul parametrului real c.
Exemplu: dac a=33.17 i b=15.40, c va avea valoarea 40.15 (cea mai mare valoare
dintre 33.17, 15.40, 17.33 i 40.15)
(10p.)

4.

Se citete de pe prima linie a fiierului numere.in un numr natural n (0<n<10000) i, de


pe a doua linie a fiierului, n numere naturale din intervalul [1,100] i se cere s se
afieze pe ecran, n ordine cresctoare, desprite prin cte un spaiu, numrul sau
numerele ntregi din intervalul [1,100] care nu apar printre numerele citite. Dac pe a
doua linie a fiierului apar toate numerele din intervalul precizat, se va afia mesajul NU
LIPSESTE NICIUN NUMAR. Alegei un algoritm de rezolvare eficient din punctul de
vedere al timpului de executare.
Exemplu: pentru fiierul numere.in cu urmtorul coninut
12
4 2 3 1 6 5 7 8 9 11 10 100
se vor afia valorile 12 13 99.
a) Explicai n limbaj natural metoda utilizat, justificnd eficiena acesteia (4-6 rnduri).
(4p.)
b) Scriei programul C/C++ ce rezolv
descrise la punctul a).

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

problema enunat, corespunztor metodei


(6p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 080


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
O clas de 28 de elevi este la ora de educaie fizic i profesorul dorete s formeze o
echip de 4 elevi. Ordinea elevilor n cadrul echipei nu are importan. Algoritmul de
generare a tuturor posibilitilor de a forma o asfel de echip este similar cu algoritmul de
generare a tuturor:
(4p.)
a. aranjamentelor de 28 de elemente luate
b. combinrilor de 28 de elemente luate
cte 4
cte 4
c. partiiilor unei mulimi cu28 de elemente
d. elementelor
produsului
cartezian
AxAxAxA, A fiind o mulime cu 28 de
elemente

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru definiia alturat a subprogramului sub, int sub(long n)


{if (n!=0)
ce valoare are sub(9)? Dar sub(132764)?
if(n%2!=0)
(6p.)
return n%10+sub(n/10);
else return sub(n/10);
else return 0;
}

3.

Fiierul text bac.in conine cel mult 1000 de numere naturale cu cel mult patru cifre
fiecare, desprite prin cte un spaiu. Scriei programul C/C++ care citete numerele din
fiier i afieaz pe ecran, n ordine cresctoare, acele numere din fiier care au toate cifrele
egale. Dac fiierul nu conine niciun astfel de numr, se va afia pe ecran mesajul NU
EXISTA.
Exemplu: dac fiierul bac.in conine numerele: 30 44 111 7 25 5 atunci pe ecran
se va afia 5 7 44 111.
(10p.)

4.

a) Scriei definiia complet a unui subprogram divi cu doi parametri, care primete prin
intermediul parametrului n un numr natural nenul cu cel mult 6 cifre i returneaz prin
intermediul parametrului d cel mai mic divizor propriu al lui n sau 0 in cazul n care n nu are
niciun divizor propriu. De exemplu, pentru n=15, d va avea valoarea 3.
(4p.)
b) Scriei programul C/C++ care citete de la tastatur un numr natural nenul n
(1<n<1000000) i afieaz pe ecran cel mai mare numar natural mai mic dect n care l
divide pe n. Se vor folosi apeluri utile ale subprogramului divi.
Exemple: dac n=120, se afieaz pe ecran 60, iar dac n=43, se afieaz 1.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 081


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Folosind cifrele {1,2,3} se genereaz, n ordinea cresctoare a valorii, toate numerele
pare formate din trei cifre distincte. Astfel, se obin n ordine, numerele: 132, 312. Folosind
aceeai metod, se genereaz numerele pare formate din patru cifre distincte din mulimea
{1,2,3,4}. Care va fi al 4-lea numr generat ?
(4p.)
a. 2134
b. 1432
c. 2314
d. 1423
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Pentru definiia alturat a subprogramului f, int f(int x,int y)
scriei ce valoare are f(0,0). Dar f(525,5)? { if(x==0)return 0;
else
(6p.)
if(x%10==y)
return f(x/10,y)+1;
else return f(x/10,y);
}
3.
Scriei n C/C++ definiia complet a subprogramului medie care are doi parametri:
- n, prin care primete un numr natural (1n100) ;
- v, prin care primete un tablou unidimensional cu n elemente, numere naturale, fiecare
element avnd cel mult patru cifre.
Subprogramul returneaz media aritmetic a elementelor din tablou.
(10p.)
4.
Fiierul text NUMERE.IN conine, pe mai multe linii, cel mult 30000 de numere naturale
nenule mai mici sau egale cu 500, desprite prin cte un spaiu.
a) Scriei programul C/C++ care, utiliznd un algoritm eficient din punct de vedere al timpului
de executare, afieaz pe ecran, n ordine cresctoare, toate numerele care au aprut o
singur dat din fiierul NUMERE.IN, desprite prin cte un spaiu.
Exemplu: dac fiierul NUMERE.IN conine numerele scrise alturat, se vor 2 23 34 3
afia valorile urmtoare: 3 4 5 6 34
(6p.) 8 9 9 23
6 8 9 2
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit la punctul a), 4 5 23 9
explicnd n ce const eficiena ei (3 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 082


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Folosind cifrele {2,3,4} se genereaz, n ordinea cresctoare a valorii, toate numerele


impare formate din trei cifre distincte. Astfel se obin, n ordine, numerele: 243, 423.
Folosind aceeai metod, se genereaz numerele pare formate din patru cifre distincte din
mulimea {2,3,4,5}. Care va fi al 5-lea numr generat?
(4p.)
a. 3452
b. 3524
c. 2534
d. 3542

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


int f(int x)
{ if(x==0)return 0;
else
if(x%2==0)return 1+f(x/10);
else return 2+f(x/10);
}

2.

Pentru definiia alturat a subprogramului f,


stabilii ce valoare are f(2). Dar f(123)?
(6p.)

3.

Scriei n C/C++ definiia complet a subprogramului suma care are doi parametri:
- n, prin care primete un numr natural (1n100);
- v, prin care primete un tablou unidimensional cu n elemente, numere ntregi situate n
intervalul [10,30000]. Funcia returneaz suma numerelor din tabloul v care au ultimele
dou cifre identice.
Exemplu: dac n=4 i v=(123, 122, 423, 555) funcia va returna 677 (=122+555).
(10p.)

4.

Fiierul text NUMERE.IN conine, pe mai multe linii, cel mult 30000 de numere naturale
nenule mai mici sau egale cu 500, numerele de pe fiecare linie fiind desprite prin cte un
spaiu. Fiierul conine cel puin dou numere distincte, fiecare avnd dou cifre.
a) Scriei programul C/C++ care citete toate numerele din fiierul NUMERE.IN i creeaz
fiierul text NUMERE.OUT care s conin pe prima linie cel mai mare numr de dou cifre
din fiierul NUMERE.IN, i de cte ori apare el n acest fiier, iar pe a doua linie, cel mai mic
numr de dou cifre din fiierul NUMERE.IN i de cte ori apare el n acest fiier. Alegei o
metod de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de
executare.
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit la punctul a), explicnd n
ce const eficiena ei (3 4 rnduri).
(4p.)
Exemplu: dac fiierul
atunci
fiierul
NUMERE.OUT
va
2 253 34 3
88 2
NUMERE.IN are coninutul 6 88 9 2 3
avea urmtorul coninut:
34 2
alturat:
4 54 34 88

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 083


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Folosind cifrele {1,2,3} se genereaz, n ordinea cresctoare a valorii, toate numerele
formate din exact trei cifre, n care cifrele alturate au valori consecutive. Astfel se obin n
ordine, numerele: 121, 123, 212, 232, 321 i 323. Folosind aceeai metod se
genereaz numere de patru cifre din mulimea {1,2,3,4} care ndeplinesc aceeai
condiie. Care va fi al 5-lea numr generat ?
(4p.)
a. 2121
b. 2123
c. 3121
d. 2323
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Pentru definiia alturat a subprogramului f, int f(int x)
{ if(x==0)return 0;
stabilii ce valoare are f(2). Dar f(123)?
else
(6p.)
if(x%2==0)return 3+f(x/10);
else return 4+f(x/10);
}
3.
Scriei n C/C++ definiia complet a subprogramului suma care are doi parametri:
- n, prin care primete un numr natural (1n100);
- v, prin care primete un tablou unidimensional cu n elemente, numere ntregi, fiecare
avnd exact trei cifre.
Funcia returneaz suma elementelor din tablou care au prima cifr egal cu ultima cifr.
(10p.)
4.
Fiierul text NUMERE.IN conine mai multe linii, pe fiecare linie existnd cte un ir de
numere naturale nenule mai mici sau egale dect 30000, desprite prin cte un spaiu;
fiecare linie se termin cu numarul 0 (care se consider c nu face parte din irul aflat pe
linia respectiv) i conine cel puin dou valori.
a) Scriei programul C/C++ care afieaz pe ecran valoarea maxim din irul care conine
cele mai puine numere. n cazul n care exist mai multe iruri cu acelai numr minim de
numere, se va afia cea mai mare valoare care apare n unul dintre aceste iruri. Alegei o
metod de rezolvare eficient din punct de vedere al memoriei utilizate i al timpului de
executare.
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit la punctul a), explicnd n
ce const eficiena ei (3 4 rnduri).
(4p.)
Exemplu: dac fiierul NUMERE.IN are coninutul 2 253 34 3 0
6 88 9 3 0
alturat, atunci pe ecran se va afia numrul 253.
4 54 88 12345 98 234 546 0

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 084


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Folosind cifrele {3,4,5} se genereaz, n ordinea cresctoare a valorii, toate numerele


impare formate din trei cifre distincte. Astfel se obin, n ordine, numerele: 345, 435, 453,
543. Folosind aceeai metod, se genereaz numerele impare formate din patru cifre
distincte din mulimea {2,3,4,5}. Care va fi al 5-lea numr generat?
(4p.)
a. 3425
b. 2534
c. 4235
d. 3245

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru definiia alturat a subprogramului f, int f(int x)


stabilii ce valoare are f(1)? Dar f(100)? { if(x==0)return 1;
else
(6p.)
return 1+f(x-1);
}

3.

Scriei programul C/C++ care citete de la tastatur un numr natural n (1n100), apoi
un ir de n numere ntregi, cu cel mult 2 cifre fiecare, notat a1,a2,a3,an, apoi un al doilea
ir de n numere ntregi, cu cel mult 2 cifre fiecare, notat b1,b2,b3,bn. Fiecare ir conine
att valori pare, ct i impare. Programul afieaz pe ecran suma acelor numere impare din
irul b care sunt mai mici dect suma tuturor numerelor pare din irul a.
Exemplu: pentru n=4 i numerele 2,3,7,8 respectiv 44,3,1,8 se afieaz valoarea 4
pentru c numerele 3 i 1 sunt mai mici dect suma numerelor pare din irul a, care este
10.
(10p.)

4.

Se consider subprogramul CMMMC care primete prin cei doi parametri, x i y, dou
numere naturale (1x10000, 1y10000) i returneaz cel mai mic multiplu comun al lor.
a) Scriei numai antetul subprogramului CMMMC.

(4p.)

b) Fiierul text NUMERE.IN conine, pe fiecare linie, cte dou numere naturale nenule mai
mici sau egale dect 10000, desprite printr-un spaiu. Scriei un program C/C++ care,
pentru fiecare linie k din fiierul NUMERE.IN, citete cele dou numere de pe aceast linie
i scrie n fiierul text NUMERE.OUT , tot pe linia k, cel mai mic multiplu comun al acestora,
ca n exemplu.
Se vor utiliza apeluri utile ale subprogramului CMMMC.
(6p.)
84
12
14
atunci fiierul
Exemplu: dac fiierul
132
11 12
NUMERE.OUT va avea
NUMERE.IN are coninutul
8
4
8
alturat:
urmtorul coninut:

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 085


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Folosind cifrele {1,2,3} se genereaz, n ordinea cresctoare a valorii, toate numerele
impare formate din trei cifre distincte. Astfel se obin, n ordine, numerele: 123, 213, 231,
321. Folosind aceeai metod, se genereaz numerele impare formate din patru cifre
distincte din mulimea {1,2,3,4}. Care va fi al 5-lea numr generat ?
(4p.)
a. 2413
b. 1423
c. 2431
d. 3241
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.

Pentru definiia alturat a subprogramului f, int f(int x)


scriei ce valoare are f(51). Dar f(100)? { if(x==50)return 1;
else
(6p.)
return 2+f(x-1);
}

3.

Scriei programul C/C++ care citete de la tastatur un numr natural n (1n100), apoi
un ir de n numere ntregi, cu cel mult 2 cifre fiecare, notat a1,a2,a3,an, apoi un al doilea
ir de n numere ntregi, cu cel mult 2 cifre fiecare, notat b1,b2,b3,bn. Fiecare ir conine
att valori pare, ct i impare. Programul afieaz pe ecran suma acelor numere din irul b
care sunt strict mai mici dect media aritmetic a tuturor numerelor pare din irul a.
Exemplu: pentru n=4 i numerele 2,3,7,8 respectiv 44,3,1,8 se afieaz valoarea 4
pentru c numerele 3 i 1 sunt mai mici dect media aritmetic a numerelor pare din irul a,
care este 5.
(10p.)

4.

Se consider subprogramul CMMDC care primete prin cei doi parametri, x i y, dou
numere naturale (1x10000, 1y10000) i returneaz cel mai mare divizor comun al lor.
a) Scriei definiia complet a subprogramului CMMDC.

(4p.)

b) Fiierul text NUMERE.IN conine, pe fiecare linie, cte dou numere naturale nenule mai
mici sau egale dect 10000, desprite printr-un spaiu, reprezentnd numitorul i
numrtorul cte unei fracii. Scriei un program C/C++ care, pentru fiecare linie k din
fiierul NUMERE.IN, citete numitorul i numrtorul fraciei de pe aceast linie i scrie n
fiierul text NUMERE.OUT , tot pe linia k, numitorul i numrtorul acestei fracii, adus la
forma ireductibil, ca n exemplu. Se vor utiliza apeluri apeluri utile ale subprogramului
CMMDC.
(6p.)
12 14
6 7
Exemplu: dac fiierul
atunci fiierul
11 12
11 12
NUMERE.IN are coninutul
NUMERE.OUT va avea
2
2
1 1
alturat:
urmtorul coninut:
4 8
1 2

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 086


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

La examenul de bacalaureat, un elev primete un test format dintr-un subiect de tip I, unul
de tip II i unul de tip III. Stiind c pentru fiecare tip de subiect sunt elaborate exact 100
de variante, algoritmul de generare a tuturor posibilitilor de a forma un test este similar
cu algoritmul de generare a:
(4p.)
a. elementelor produsului cartezian
b. aranjamentelor
c. permutrilor
d. submulimilor

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul f, definit


alturat. Ce se afieaz la apelul f(4);?
(6p.)

void f(int n)
{
cout<<"*"; | printf("*");
if(n>2)
{
f(n-1);
cout<<"#"; | printf("#");
}
}

3.

Scriei definiia complet a subprogramului numar, cu trei parametri, care primete prin
intermediul parametrului n un numr natural format din cel mult 9 cifre, iar prin intermediul
parametrilor c1 i c2 cte o cifr nenul; subprogramul retuneaz numrul obinut prin
nlocuirea n numrul primit prin parametrul n a fiecrei apariii a cifrei c1 cu cifra c2. Dac
c1 nu apare n n, subprogramul returneaz valoarea n.
Exemplu: pentru n=12445, c1=4 i c2=7 valoarea returnat va fi 12775.
(10p.)

4.

Fiierul text bac.txt conine cel puin dou i cel mult 1000 de numere naturale distincte,
dintre care cel puin dou sunt pare. Numerele sunt separate prin cte un spaiu i fiecare
dintre ele are cel mult 9 cifre.
a) Scriei un program C/C++ care determin cele mai mari dou numere pare din fiier,
utiliznd un algoritm eficient din punct de vedere al timpului de executare i al spaiului de
memorie utilizat. Cele dou numere vor fi afiate pe ecran, n ordine descresctoare,
separate printr-un spaiu.
Exemplu: dac fiierul conine numerele: 5123 8 6 12 3 se va afia: 12 8
(6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 087


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Trei elevi vor s nfiineze o trup de rock format dintr-un chitarist solo, un basist i un
baterist. Toi trei tiu s cnte att la chitar solo, ct i la chitar bas, i se pricep cu toii
i la baterie. Algoritmul de generare a tuturor posibilitilor de a forma trupa este similar cu
algoritmul de generare a:
(4p.)
a. aranjamentelor
b. permutrilor
c. elementelor produsului cartezian
d. submulimilor

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


void f(int n)
{
if(n>0)
{
cout<<n; | printf(%d,n);
f(n-1);
cout<<n; | printf(%d,n);
}
}

2.

Se consider subprogramul f, definit


alturat. Ce se afieaz la apelul f(4);?
(6p.)

3.

Scriei definiia complet a subprogramului reduce, cu doi parametri, care primete prin
intermediul parametrilor a i b dou numere naturale formate din cel mult 9 cifre fiecare.
Funcia returneaz o valoare obinut din numrul a prin nsumarea acelor cifre diferite de 0
ale numrului a care NU divid numrul b. Dac nu exist asemenea cifre, se va returna
valoarea 0.
Exemplu: pentru a=184465709 i b=18, cifrele corespunztoare cerinei sunt 8, 4, 4, 5 i
7, deci valoarea returnat va fi 28 (28=8+4+4+5+7). Dac a=2402804 i b=8000,
valoarea returnat va fi 0.
(10p.)

4.

Fiierul text bac.txt conine un ir de cel mult 2009 numere naturale, cu cel mult nou
cifre fiecare, pe mai multe rnduri, numerele de pe acelai rnd fiind separate prin cte un
spaiu.
a) Scriei un program C/C++ care afieaz pe ecran cel mai mic numr din fiier pentru care
suma cifrelor pare este egal cu suma cifrelor impare, precum i numrul de apariii n fiier
ale acestui numr, folosind o metod eficient din punctul de vedere al timpului de
executare. Cele dou valori vor fi afiate pe o linie a ecranului, separate printr-un spaiu.
Dac nu exist asemenea valori se afieaz mesajul NU EXISTA.
Exemplu: dac n fiier avem numerele 22031 9021 22031 1021 2011 10012 1021
457008 99882 atunci pe ecran se vor afia numerele: 1021 2.
(6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 088


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Ionel dorete s ofere cadouri membrilor familiei sale, format din cei doi prini i o sor.
Decide s le ofere stilouri de diferite culori. La magazin exist stilouri de 5 culori diferite.
Algoritmul de generare a tuturor posibilitilor de a atribui cte un stilou fiecruia dintre cei
trei membri ai familiei, fr s se repete vreo culoare, este similar cu algoritmul de
generare a
(4p.)
a. aranjamentelor
b. elementelor produsului cartezian
c. permutrilor
d. submulimilor

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


Se consider subprogramul f, definit alturat. int f(int n)
2.
Ce valoare are f(1)? Dar f(4)?
(6p.)
{
if (n==0) return 1;
else if (n==1) return 2;
else return f(n-1)-f(n-2);
}
3.

Scriei definiia complet a subprogramului numar, cu patru parametri, care primete prin
intermediul parametrului n un numr natural format din cel mult 9 cifre, iar prin intermediul
parametrilor c1 i c2 cte o cifr cu proprietatea c1<c2; subprogramul furnizeaz prin
intermediul celui de al patrulea parametru, x, o valoare obinut prin eliminarea din numrul
primit prin parametrul n a fiecrei cifre cuprinse n intervalul nchis [c1, c2]. Dac toate
cifrele lui n aparin acestui interval, valoarea furnizat prin x va fi 0.
Exemplu: pentru n=162448, c1=4 i c2=7, valoarea furnizat prin x va fi 128.
(10p.)

4.

Fiierul text bac.txt conine cel mult 10000 de numere naturale din intervalul nchis
[0,9], dintre care cel puin unul este prim. Numerele se afl pe mai multe rnduri, cele de
pe acelai rnd fiind separate prin cte un spaiu.
a) Scriei un program C/C++ care determin i afieaz pe ecran cel mai mare numr prim
care apare n fiier i numrul de apariii ale acestuia, utiliznd un algoritm eficient din punct
de vedere al timpului de executare i al spaiului de memorie utilizat. Programul afieaz pe
ecran cele dou valori determinate, separate printr-un spaiu.
Exemplu: dac fiierul conine numerele: 5 8 9 1 9 5 1 1 2 2 se va afia 5 2. (6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 089


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

O clas format din 28 de elevi dorete s trimit la consftuirea reprezentanilor claselor


colii o delegaie format din 3 elevi. Algoritmul de generare a tuturor posibilitilor de a
forma o delegaie este similar cu algoritmul de generare a:
(4p.)
a. permutrilor
b. aranjamentelor
c. combinrilor
d. submulimilor

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


Se consider subprogramul f, definit alturat. long f(int n)
2.
Ce valoare are f(0)? Dar f(4)?
(6p.)
{
if (n==0) return 0;
else return n*n+f(n-1);
}
3.

Scriei definiia complet a subprogramului numar, cu trei parametri, care primete prin
intermediul parametrului n un numr natural format din cel mult 9 cifre, iar prin intermediul
parametrilor c1 i c2 cte o cifr nenul. Subprogramul caut prima apariie (de la stnga
spre dreapta) a cifrei c1 n n, i dac aceasta apare, o nlocuiete cu c2, iar urmtoarele
cifre, dac exist, sunt nlocuite cu cte o cifr 0. Subprogramul furnizeaz tot prin n
numrul astfel obinut. Dac cifra c1 nu apare n n, atunci valoarea lui n rmne
nemodificat.
Exemplu: pentru n=162448, c1=4 i c2=7 valoarea furnizat prin n va fi 162700. (10p.)

4.

Fiierul text bac.txt conine pe mai multe rnduri cel mult 50000 de numere naturale din
intervalul nchis [0, 99], numerele de pe acelai rnd fiind separate prin cte un spaiu.
a) Scriei un program C/C++ care afieaz pe ecran, n ordine descresctoare, acele
numere din fiier care sunt mai mari dect un numr natural k, citit de la tastatur, utiliznd
un algoritm eficient din punct de vedere al timpului de executare. Dac un numr apare de
mai multe ori, i este mai mare dect k, se va afia o singur dat. Numerele vor fi afiate
cte 20 pe fiecare linie (cu excepia ultimei linii care poate s conin mai puine valori),
separate prin cte un spaiu.
Exemplu: dac fiierul conine numerele: 15 8 99 15 1 37 1 24 2, iar pentru k se citete
valoarea 7, se vor afia numerele 99 37 24 15 8.
(6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 090


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
La un bal mascat, magazia colii pune la dispoziia elevilor 10 pelerine, 10 mti i 10
plrii divers colorate. Algoritmul de generare a tuturor posibilitilor de a obine un costum
format dintr-o plrie, o masc i o pelerin este similar cu algoritmul de generare a : (4p.)
a. elementelor produsului cartezian
b. aranjamentelor
c. permutrilor
d. submulimilor

1.

Scriei pe foaia de examen rspunsul la urmtoarea ntrebare:


2.

Se consider subprogramul f, definit


alturat. Ce se afieaz la apelul
f('a');?
(6p.)

void f(char c)
{
if (c != 'e')
{
f(c+1);
cout<<c; |
}
}

printf(%c,c);

3.

Funcia verif primete prin intermediul parametrului n un numr natural format din cel mult
9 cifre, i prin intermediul parametrului a, un numr natural nenul (2a9). Funcia
returneaz valoarea 1 dac n este un numr format din cifre aparinnd intervalului nchis
[0,a] i valoarea 0 n caz contrar.
a) Scriei definiia complet a funciei verif.
(4p.)
b) Spunem c n poate fi o reprezentare n baza b (1<b10), dac toate cifrele lui n sunt
strict mai mici dect b. Scriei un program care citete de la tastatur o valoare natural n cu
cel mult 9 cifre i, utiliznd apeluri ale funciei verif, afieaz pe ecran, n ordine
cresctoare, cu spaii ntre ele, toate valorile lui b pentru care valoarea citit nu poate fi o
reprezentare n baza b.
(6p.)
Exemplu: Pentru n=4101, se afieaz 2 3 4.

4.

Fiierul text bac.txt conine cel mult 1000 de numere ntregi de cel mult 9 cifre fiecare,
numerele fiind separate prin cte un spaiu; printre numerele din fiier exist cel puin dou
numere pozitive, aflate pe poziii consecutive.
a) Scriei un program C/C++ care afieaz dou numere pozitive, aflate unul dup altul n
fiier, a cror sum este maxim, utiliznd un algoritm eficient din punct de vedere al
timpului de executare i al spaiului de memorie utilizat. Dac exist mai multe soluii, se
afieaz doar acea pereche pentru care diferena dintre cele dou numere este maxim.
Numerele vor fi afiate pe ecran, n ordinea din fiier, separate printr-un spaiu.
Exemplu: dac fiierul conine numerele: -2 2 16 4 -1 25 -2 8 12 7 13 se vor
afia numerele 16 4, n aceast ordine, cu un spaiu ntre ele.
(6p.)
b) Descriei succint, n limbaj natural, algoritmul utilizat, justificnd eficiena acestuia. (4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 091


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Pentru a planifica n orarul unei coli, la clasa a XII-a, 4 ore de informatic n zile lucrtoare
diferite din sptmn, cte o singur or pe zi, se poate utiliza un algoritm echivalent cu
algoritmul de generare a:
(4p.)

a. permutrilor de 4 elemente

b. aranjamentelor de 4 elemente luate cte 5

c. aranjamentelor de 5 elemente luate cte 4

d. combinrilor de 5 elemente luate cte 4

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


void f(int i)
2.
Subprogramul recursiv alturat { if (. . .)
este definit incomplet. Scriei
{ printf(%d ,i); | cout<<i<< ;
expresia care poate nlocui
f(i/2);
punctele de suspensie astfel
printf(%d ,i); | cout<<i<< ;
nct, n urma apelului, f(12) s
}
se afieze irul de valori:
}
12 6 3 1 1 3 6 12.
(6p.)
3.

Subprogramul par primete prin singurul su parametru, n, un numr natural nenul cu cel
mult 8 cifre i returneaz valoarea 1 dac n conine cel puin o cifr par, sau returneaz
valoarea 0 n caz contrar.
Exemplu: pentru n=723 subprogramul va returna valoarea 1.
a) Scriei numai antetul subprogramului par.

(2p.)

b) Scriei un program C/C++ care citete de la tastatur un numr natural nenul n cu cel
mult trei cifre, apoi un ir de n numere naturale, cu cel puin dou i cel mult 8 cifre fiecare,
i afieaz pe ecran numrul de valori din irul citit care au numai cifra unitilor par,
celelalte cifre fiind impare. Se vor utiliza apeluri utile ale subprogramului par.
Exemplu: dac n=4, iar irul citit este 7354, 123864, 51731, 570 se va afia 2 (numerele
7354 i 570 respect condiia cerut).
(8p.)
4.

Fiierul numere.in conine cel mult 5000 de numere reale, cte unul pe fiecare linie. Se
cere s se scrie un program care s citesc toate numerele din fiier i s afieze pe ecran
numrul de ordine al primei, respectiv al ultimei linii pe care se afl cel mai mare numr din
fiier. Cele dou numere vor fi separate printr-un spaiu. Alegei o metod de rezolvare
eficient din punct de vedere al spaiului de memorare i al timpului de executare.
Exemplu: dac fiierul are coninutul alturat, pe ecran se vor afia numerele 2 6. 3.5
7
a) Descriei succint, n limbaj natural, metoda de rezolvare aleas, explicnd n ce -4
const eficiena ei.
(4p.)
7
b) Scriei programul C/C++ corespunztor metodei descrise.
(6p.) 2
7
6.3
5

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 092


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Avnd la dispoziie cifrele 0, 1 i 2 se pot genera, n ordine cresctoare, numere care au


suma cifrelor egal cu 2. Astfel, primele 6 soluii sunt 2, 11, 20, 101, 110, 200. Folosind
acelai algoritm, se genereaz numere cu cifrele 0, 1, 2 i 3 care au suma cifrelor egal
cu 4. Care va fi al 7-lea numr din aceast generare?
(4p.)
a. 130
b. 301
c. 220
d. 103

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.
Se consider subprogramul f definit alturat. void f(int x)
{
Ce se va afia n urma apelului f(14);? if (x<=10)
(6p.)
cout<<0<< ;|printf("%d ",0);
else
{f(x-2);
cout<<x<< ;|printf("%d ",x);
}
}
3.

Subprogramul ordonare primete prin parametrul x un tablou unidimensional cu cel mult


100 de elemente numere reale, iar prin parametrul n un numr ntreg ce reprezint numrul
efectiv de elemente ale tabloului x. Subprogramul ordoneaz cresctor elementele tabloului
i furnizeaz, tot prin intermediul parametrului x, tabloul ordonat.
a) Scriei numai antetul acestui subprogram.

(4p.)

b) Scriei un program C/C++ care citete de la tastatur dou numere naturale, n i m


(1n100 i mn), i apoi un ir de n numere reale distincte. Folosind apeluri utile ale
subprogramului ordonare, programul afieaz pe prima linie a ecranului, cele mai mari m
elemente din irul citit (n ordine cresctoare a valorilor lor), iar pe a doua linie de ecran,
cele mai mici m elemente din ir (n ordine descresctoare a valorilor lor). Numerele afiate
pe aceeai linie vor fi separate prin cte un spaiu.
(10p.)
Exemplu : dac n=9, m=3, iar irul este (14.2, 60, -7.5, -22, 33.8, 80, 4, 10, 3) se va
afia pe ecran:
33.8 60 80
3 -7.5 -22
4.

Scriei un program C/C++ care creeaz fiierul text SIR.TXT i scrie n el toate irurile
formate din dou caractere distincte, litere mari ale alfabetului englez, astfel nct niciun ir
s nu fie format din dou vocale alturate. Fiecare ir va fi scris pe cte o linie a fiierului.
(6p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 093


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
n cte dintre permutrile elementelor mulimii {I,N,F,O} vocala I apare pe
prima poziie?
(4p.)
b. 24
c. 6
d. 12
a. 1
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
void f (int x,int y)
2. Subprogramul f este definit alturat.
Ce se afieaz ca urmare a apelului { if (x<y){x=x+1;f(x,y);
f(1,3); ?
(6p.)
y=y-1;f(x,y);
}
else
cout<<x<<y; printf(%d%d,x,y);
}
3.

Scriei programul C/C++ care citete de la tastatur un numr natural n (1n99), impar, i
construiete n memorie un tablou unidimensional A=(A1, A2,, An) cu elementele
mulimii {1,2,...,n} astfel nct elementele de pe poziii impare formeaz irul cresctor
1,2,...,[(n+1)/2], iar elementele de pe poziii pare irul descresctor n,n-1,...,
[(n+1)/2]+1.
Exemplu: pentru n=11 se va construi tabloul A :
Programul va crea un fiier text TABLOU.TXT. Elementele tabloului se vor scrie, n ordine, pe
prima linie a fiierului, cu cte un spaiu ntre ele.
(10p.)

4.

a) Scriei definiia complet a subprogramului dcm, cu doi parametri, care:


- primete prin parametrii a i b dou valori naturale din intervalul [1,30000]
- returneaz o valoare natural reprezentnd cel mai mare numr care este att divizor al lui a
ct i divizor al lui b.
Exemplu: dac a=100 i b=120, subprogramul returneaz valoarea 20.

(6p.)

b) Scriei un program C/C++ care citete de la tastatur dou numere naturale a i b,


numere din intervalul [1,30000] i determin, folosind apeluri utile ale subprogramului
dcm, cel mai mare numr care este divizor al fiecruia dintre numerele a i b i are
proprietatea c este un produs de dou sau mai multe numere prime distincte. Programul
afieaz pe ecran numrul cu proprietatea cerut, iar dac nu exist un astfel de numr,
afieaz mesajul nu exista.
Exemplu: dac a=60 i b=72, atunci se afieaz 6
iar dac a=100 i b=75, atunci se afieaz nu exista.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(4p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 094


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Un elev realizeaz un program care citete o valoare natural pentru o variabil


n i apoi afieaz n fiierul permut.txt, pe prima linie, valoarea lui n, apoi
toate permutrile mulimii {1,2,...,n}, cte o permutare pe cte o linie a
fiierului. Rulnd programul pentru n=3, fiierul va conine cele 7 linii alturate.
Dac va rula din nou programul pentru n=4, ce va conine a 8-a linie din fiier?
(4p.)

a. 2134

b. 2143

c. 3421

3
3
3
2
2
1
1

2
1
3
1
3
2

1
2
1
3
2
3

d. 3412

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Funcia recursiv f este astfel definit nct f(1)=8, iar f(n+1)=2*f(n)-4 pentru orice n
natural nenul.
a) Ce valoare are f(5) ?

(3p.)

b) Care este cea mai mare valoare pe care o poate lua x astfel nct f(x) < 1000 ? (3p.)
3.

Scriei definiia complet a funciei f, care primete prin intermediul parametrului n un numr
natural nenul (2n200), iar prin intermediul parametrului a un tablou unidimensional care
conine n valori ntregi, fiecare dintre aceste valori ntregi avnd cel mult patru cifre. Funcia
returneaz valoarea 1 dac elementele tabloului formeaz un ir cresctor, valoarea 2 dac
elementele tabloului formeaz un ir descresctor, valoarea 0 dac elementele tabloului
formeaz un ir constant i valoarea -1 n rest.
(10p.)

4.

Fiierul text numr.txt conine pe prima linie o valoare natural n cu exact 9 cifre nenule
distincte. Scriei un program eficient din punctul de vedere al timpului de executare care
citete din fiier numrul n i afieaz pe ecran cea mai mic valoare m format din exact
aceleai cifre ca i n, astfel nct m>n. n cazul n care nu exist o astfel de valoare,
programul va afia pe ecran mesajul Nu exista.
Exemplu: Dac fiierul numr.txt conine numrul 257869431, se va afia pe ecran
numrul 257891346.
a) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
b) Scriei un program C/C++ care rezolv problema conform metodei descrise.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(6p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 095


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Un program citete o valoare natural nenul pentru n i apoi genereaz i afieaz, n
ordine cresctoare lexicografic, toate combinaiile formate din n cifre care aparin mulimii
{0,1}. Astfel, pentru n=2, combinaiile sunt afiate n urmtoarea ordine: 00, 01, 10, 11.
Dac se ruleaz acest program i se citete pentru n valoarea 9, imediat dup combinaia
011011011 va fi afiat combinaia:
(4p.)
011100100
011011100
011011011
011100000
a.
b.
c.
d.

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


int f(int n)
2.
Funcia f are definiia alturat. Scriei cinci valori {
de apel pe care le poate avea n astfel nct,
if (n<=9) return 0;
pentru cele 5 apeluri corespunztoare acestor
if (n%5==0) return 0;
valori, s se obin 5 valori ale funciei, disticte
return 1+f(n-3);
dou cte dou.
(6p.) }
3.

Funcia f primete prin intermediul parametrului n un numr natural nenul (2n200), iar
prin intermediul parametrului a un tablou unidimensional care conine n valori ntregi nenule
(fiecare dintre aceste valori ntregi avnd cel mult patru cifre).
Funcia returneaz valoarea -1 dac numrul de valori negative din tabloul a este strict mai
mare dect numrul de valori pozitive din tablou, valoarea 0 dac numrul de valori
negative din a este egal cu numrul de valori pozitive din tablou i valoarea 1 dac numrul
de valori pozitive din tabloul a este strict mai mare dect numrul de valori negative din a.
Scriei definiia complet a funciei f.
(10p.)

4.

a) Scriei un program C/C++ care citete de la tastatur un numr natural nenul, S, avnd
maximum 9 cifre, i printr-o metod eficient din punct de vedere al timpului de executare,
determin i scrie n fiierul rez.dat trei valori naturale a cror sum este egal cu S, i al
cror produs este maxim. Cele trei valori vor fi scrise n ordine cresctoare pe prima linie a
fiierului rez.dat, separate prin cte un spaiu.
Exemplu: dac se citete valoarea 5, fiierul rez.dat va avea o linie cu coninutul 1 2 2.
(6p.)
b) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 096


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Un program citete o valoare natural nenul pentru n i apoi genereaz i afieaz, n
ordine descresctoare lexicografic, toate combinaiile de n cifre care aparin mulimii
{0,1}. Astfel, pentru n=2, combinaiile sunt afiate n urmtoarea ordine: 11, 10, 01, 00.
Dac se ruleaz acest program i se citete pentru n valoarea 8, imediat dup combinaia
10101000 va fi afiat combinaia:
(4p.)
01010111
10100111
10101001
10100100
a.
b.
c.
d.

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


int f(int n)
2.
Funcia f are definiia alturat. Scriei 4 valori de {if (n<=9) return 0;
apel pe care le poate avea n astfel nct, pentru
if (n%4==0) return 0;
cele 4 apeluri, corespunztoare acestor valori, s
return 1+f(n-3);
se obin 4 valori, distincte dou cte dou. (6p.) }
3.

Funcia verif primete prin intermediul a trei parametri, notai a, b i c, trei valori naturale
nenule, fiecare de maximum patru cifre. Funcia returneaz valoarea 1 dac cele trei valori
pot constitui laturile unui triunghi i valoarea 0 n caz contrar.
a) Scriei definiia complet a funciei verif.

(5p.)

b) Scriei un program C/C++ care citete de la tastatur ase valori naturale nenule, fiecare
de maximum patru cifre, apoi verific, utiliznd apeluri utile ale funciei verif, dac primele
trei numere citite pot constitui laturile unui triunghi i dac ultimele trei numere citite pot
constitui laturile unui triunghi; n caz afirmativ, programul afieaz pe ecran mesajul
congruente dac cele dou triunghiuri sunt congruente sau mesajul necongruente dac
cele dou triunghiuri nu sunt congruente; dac cel puin unul dintre cele dou triplete de
valori nu pot constitui laturile unui triunghi, programul va afia pe ecran mesajul nu. (5p.)
4.

Fiierul BAC.DAT conine pe prima linie, separate printr-un spaiu, dou valori naturale n i m
(2n1000, 2m1000), pe a doua linie n valori ntregi i pe a treia linie m valori ntregi.
Valorile de pe a doua i de pe a treia linie apar n fiier n ordine strict cresctoare, sunt
separate prin cte un spaiu i au cel mult 4 cifre fiecare.
Se cere afiarea pe ecran a dou valori, dintre cele aflate n poziii consecutive pe a treia
linie a fiierului, care determin intervalul nchis n care se afl un numr maxim de valori de
pe a doua linie a fiierului. Se va utiliza o metod eficient din punct de vedere al timpului de
executare i al spaiului de memorie utilizat. Se garanteaz c cel puin un numr aflat pe a
doua linie a fiierului aparine unuia dintre intervalele determinate de numerele de pe a treia
linie a fiierului.
Exemplu: dac fiierul BAC.DAT are coninutul 10 4
-1 1 3 4 5 6 10 15 16 117
alturat, programul va afia: 1 9
0 1 9 20
Explicaie: cele patru numere de pe a treia linie a fiierului determin trei intervale:
[0,1], [1,9], [9,20]; n intervalul [1,9] se afl 5 valori de pe a doua linie a fiierului,
acesta fiind numrul maxim de valori aflate n unul dintre cele trei intervale.
a) Descriei succint, n limbaj natural, metoda de rezolvare folosit, explicnd n ce const
eficiena ei (3 4 rnduri).
(4p.)
b) Scriei un program C/C++ care s rezolve problema conform metodei descrise.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(6p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 097


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
int f(int x){
Subprogramul recursiv alturat este definit incomplet.
if (...)
Care dintre urmtoarele expresii poate nlocui punctele
return x%10 + x/10;
de suspensie astfel nct, n urma apelului,
else
subprogramul f s returneze suma primelor dou cifre
return f(x/10);
ale numrului primit prin intermediul parametrului x?
}
Exemplu: n urma apelului f(2318) valoarea returnat
este 5.
(4p.)
b. x<=99
c. x==99
d. x!=0
a. x<=100

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se genereaz, utiliznd metoda bactracking, cuvintele cu exact 3 litere din mulimea


{a,x,c,f,g}. Dac primele patru cuvinte generate sunt, n ordine, aaa, aax, aac, aaf,
scriei ultimele trei cuvinte care ncep cu litera a, n ordinea n care vor fi generate.
(6p.)

3.

Tabloul unidimensional V, declarat global, memoreaz exact 50 de numere ntregi:


V1, V2,...,V50.
Subprogramul Calcul primete prin intermediul parametrului k un numr natural nenul
(k50) i furnizeaz prin intermediul parametrului S suma tuturor elementelor pozitive, din
tabloul V, cu indici mai mari sau egali cu k sau 0 dac toate elementele menionate sunt
negative.
(2p.)

a) Scriei doar antetul subprogramului Calcul.

b) Scriei un program n limbajul C/C++ care citete de la tastatur cele 50 de componente


ntregi ale tabloului V i dou numere naturale nenule x i y (x<y50). Programul afieaz
suma elementelor pozitive din tablou, cu indici cuprini ntre x i y inclusiv, sau 0 dac toate
elementele menionate sunt negative, folosind apeluri utile la subprogramul Calcul. (8p.)
4.

Pe prima linie a fiierului text DATE.TXT se gsete o valoare natural k (k1000000).


a) Scriei un program C/C++ care citete din fiierul DATE.TXT valoarea k i afieaz, pe
ecran, toate perechile de numere naturale nenule x, y (xy) cu proprietatea c x2+y2=k.
Fiecare pereche va fi afiat pe cte o linie, numerele fiind desprite printr-un spaiu.
Alegei o metod de rezolvare eficient din punctul de vedere al timpului de executare.
Exemplu: dac fiierul DATE.TXT conine numrul 1000000, pe ecran 280 960
se vor afia, nu neaprat n aceast ordine, perechile alturate. (6p.)
352 936
600 800
b) Descriei succint, n limbaj natural, metoda utilizat, justificnd eficiena acesteia

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(4p.)

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 098


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Se
consider
subprogramul
recursiv int Min(int x){
int c;
alturat, definit incomplet.
if (x==0) return ...;
Cu ce valoare trebuie nlocuite punctele de
else {
suspensie, pentru ca funcia s returneze
c=Min(x/10);
cifra minim a numrului natural nenul
if (c < x%10) return c;
transmis prin intermediul parametrului x?
else return x%10;
(4p.)
}
}
-1
1
b.
c. 9
d. 0
a.

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Utiliznd metoda backtracking se genereaz toate submuimile nevide ale mulimii


{3,6,2,5}. Primele ase submulimi generate sunt, n ordine: {3}, {3,6}, {3,6,2},
{3,6,2,5}, {3,6,5}, {3,2}. Care sunt, n ordinea obinerii, ultimele trei submulimi,
generate dup aceast regul?
(6p.)

3.

Scriei n limbajul C/C++ definiia complet a subprogramului numar, cu exact doi parametri,
care primete prin intermediul parametrului x un numr natural nenul de cel mult 2 cifre, i
prin intermediul parametrului y un numr natural nenul de cel mult 9 cifre. Subprogramul
returneaz cel mai mare numr natural z pentru care exist un numr natural k astfel nct
z=xk i zy.
Exemplu: pentru y=18 i x=2 subprogramul va returna valoarea 16(=24<18).
(10p.)

4.

Pe prima linie a fiierului text DATE.TXT se afl dou numere naturale nenule n i m
(n3000, m3000), pe a doua linie un ir de n numere naturale, ordonate cresctor, avnd
fiecare cel mult 9 cifre, iar pe linia a treia un ir de m numere naturale, ordonate
descresctor, avnd fiecare cel mult 9 cifre. Numerele sunt desprite, n cadrul liniilor, prin
cte un spaiu.
a) Scriei programul C/C++ care citete numerele din fiier i afieaz, pe ecran, doar
numerele pare din cele dou iruri, ordonate cresctor. Programul nu va afia nimic dac nu
exist numere pare n cele dou iruri. Alegei o metod de rezolvare eficient ca timp de
executare.
Exemplu: dac fiierul are coninutul alturat, pe ecran se 5 8
va afia: 2 4 4 32 42 42 88 88
(6p.) 2 4 7 37 42
88 88 67 45 42 32 4 1
b) Descriei succint, n limbaj natural, metoda utilizat,
justificnd eficiena acesteia.
(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 099


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Se consider subprogramul recursiv alturat, S, void S(int x)
{ cout<<'*';
definit incomplet.
if (...) {
Cu ce expresie pot fi nlocuite punctele de
cout<<'*';
suspensie astfel nct, n urma apelului S(2), s se
S(x-1);
afieze 3 caractere * ?
(4p.)
}
}
b. x>2
c. x>=3
d. x>0
a. x>1

1.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se utilizeaz metoda backtracking pentru a genera toate cuvintele formate din dou litere
distincte din muimea {w,x,z,y} astfel nct niciun cuvnt s nu nceap cu litera x i
niciun cuvnt s nu conin litera w lng litera z. Cuvintele vor fi generate n ordinea wx,
wy, zx, zy, yw, yx, yz. Folosind aceeai metod se genereaz toate cuvintele de dou
litere distincte din mulimea {w,x,z,y,t} astfel nct niciun cuvnt s nu nceap cu litera
x i niciun cuvnt s nu conin litera w lng litera z. Care sunt a treia i a patra soluie
generat?
(6p.)

3.

Subprogramul Nr are un singur parametru, k, prin intermediul cruia primete un numr


natural de cel puin 3 cifre i cel mult 9 cifre, cu toate cifrele nenule. Subprogramul
furnizeaz tot prin intermediul parametrului k, valoarea obinut prin eliminarea primei i
ultimei cifre a numrului transmis la apel.
Exemplu: dac subprogramul primete prin intermediul parametrului k valoarea 12438, n
urma apelului subprogramului Nr, k va primi valoarea 243.
Scriei, n limbajul C/C++, definiia complet a subprogramului Nr.
(10p.)

4.

Pe prima linie a fiierului text DATE.TXT se afl un ir de cel mult 10000 de numere ntregi,
avnd cel mult 4 cifre fiecare. Numerele sunt desprite prin cte un spaiu.
a) Scriei un program C/C++ care citete numerele din fiier i afieaz pe ecran lungimea
maxim a unei secvene de numere din ir, cu proprietatea c oricare dou numere din
secven, aflate pe poziii consecutive, au pariti diferite. Pe a doua linie a ecranului,
programul va afia o secven de lungime maxim, valorile fiind desprite prin cte un
spaiu. Dac exist mai multe secvene de lungime maxim, se va afia una dintre ele,
oricare. Alegei o metod de rezolvare eficient ca timp de executare.
Exemplu: dac fiierul conine, n ordine, numerele 2 4 3 2 7 4 6 2 7 8 12, se va
afia:
5
4 3 2 7 4

(6p.)

b) Descriei succint, n limbaj natural, metoda utilizat, justificnd eficiena acesteia.

(4p.)

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

Subiectul III

Ministerul Educaiei, Cercetrii i Inovrii


Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar

Subiectul III (30 de puncte) - Varianta 100


Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Aplicnd metoda backtracking pentru a genera toate permutrile celor n elemente ale unei
mulimi, o soluie se memoreaz sub forma unui tablou unidimensional x1,x2,,xn. Dac
sunt deja generate valori pentru componentele x1,x2,,xk-1, iar pentru componenta
curent, xk (1<k<n), a fost gsit o valoare convenabil, atunci se ncearc alegerea (4p.)
a. unei noi valori pentru componenta xk-1
b. unei valori pentru componenta xk+1
c. unei noi valori pentru componenta xk
d. unei noi valori pentru componenta x1

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


Ce afieaz subprogramul F, descris void F(int x)
2.
{
alturat, la apelul F(5);?
(6p.)
cout<<x; | printf(%d,x);
if(x>=3)
F(x-2);
cout<<x-1;

printf(%d,x-1);

3.

Scriei definiia complet a subprogramului divizor, cu trei parametri, prin care primete 3
numere naturale nenule cu cel mult 9 cifre fiecare i returneaz numrul divizorilor comuni
tuturor celor 3 numere.
Exemplu: dac numerele primite ca parametri sunt 24, 20 i 12, subprogramul returneaz
valoarea 3 (divizorii comuni sunt 1, 2 i 4).
(10p.)

4.

Se consider un ir s format dup regula alturat, unde


s-a notat cu ab numrul obinut prin concatenarea
cifrelor lui a i b, n aceast ordine.
Exemplu: pentru x=2 se obine irul:
2, 3, 32, 323, 32332,....
Fiierul text SIR.TXT conine pe prima linie dou numere, x (1x20) i k (1k5000),
separate printr-un spaiu, iar pe a doua linie un numr format din exact k cifre, reprezentnd
un termen al irului s (diferit de x). Cifrele numrului nu sunt separate prin spaii.
a) Scriei un program C/C++ care, utiliznd un algoritm eficient din punct de vedere al
timpului de executare i al memoriei utilizate, afieaz pe ecran acel termen din ir care l
precede pe cel citit din fiier.
Exemplu: dac fiierul conine valorile alturate, se va afia pe ecran 2 5
numrul 323.
(6p.) 32332
b) Descriei n limbaj natural metoda utilizat i explicai n ce const eficiena ei.

BACALAUREAT 2009 - INFORMATIC, limbajul C/C++


Specializarea Matematic-informatic intensiv informatic

(4p.)

Subiectul III

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea

iulie 2010 MI intensiv


(30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.


1.

a.

Utiliznd metoda backtracking se genereaz toate numerele pare cu cte trei cifre, cifre
care aparin mulimii {7, 8, 1, 6, 2, 3}. Primele 4 soluii generate sunt, n aceast ordine:
778, 776, 772, 788. Cea de a 8-a soluie generat este:
(4p.)
712
b. 716
c. 718
d. 782

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul f, definit alturat.


Scriei dou numere naturale din intervalul
deschis (20,30), care pot fi memorate n
variabilele ntregi x1, i respectiv x2, astfel nct
valoarea lui f(x1,3) s fie 29, iar valoarea lui
f(3,x2) s fie 1.
(6p.)

3.

Se consider irul s,
alturat.

int f(int a, int b)


{ if(a>=b)
return (a-b)+f(a/b,b);
return 1;
}

construit dup regula

Subprogramul sir primete prin parametrul n un numr natural (3<n<20) i furnizeaz


prin parametrul a un tablou unidimensional care memoreaz primii n termeni ai irului s,
definit dup regula de mai sus, astfel nct numerele impare s ocupe primele poziii n
tablou, iar cele pare s fie memorate n continuarea celor impare.
Scriei definiia complet a subprogramului sir.
Exemplu: dac n=6, primii ase termeni ai irului sunt 1, 1, 2, 5, 13, 34, iar, dup apel,
tabloul construit poate fi (1,1,5,13,2,34).
(10p.)
4.

Fiierul bac.in conine pe prima linie un numr natural n (3<n<1000), iar pe


urmtoarea linie, un ir de n numere naturale distincte, de cel mult nou cifre fiecare.
Numerele din ir sunt separate prin cte un spaiu i cel puin trei dintre ele au ultima cifr
egal cu 5.
a) Scriei un program C/C++ care citete toate numerele din fiier i, utiliznd un algoritm
eficient din punct de vedere al timpului de executare i al memoriei utilizate, determin i
afieaz pe ecran cele mai mari trei numere din ir care au ultima cifr egal cu 5.
Numerele determinate sunt afiate n ordine cresctoare, separate prin cte un spaiu.(6p.)
Exemplu: dac fiierul bac.in are coninutul 10
alturat, pe ecran se vor afia, n aceast ordine, 97 5 11 1 8 6 85 3 25 15
numerele: 15 25 85
b) Descriei succint, n limbaj natural (3-4 rnduri), algoritmul utilizat la punctul a) i
justificai eficiena acestuia.
(4p.)

3
Prob scris la INFORMATIC
Specializarea matematic-informatic, intensiv informatic

Varianta 8
Limbajul C/C++

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea

iuie 2010 SN
(30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.


1.
Pentru a calcula n mod eficient media aritmetic a elementelor unui tablou unidimensional
cu n componente numere naturale, toate egale, este necesar i suficient s se execute:(4p.)
a. o singur instruciune de atribuire
b. o singur parcurgere a tabloului i o
singur atribuire
c. o singur parcurgere a tabloului i dou
d. dou parcurgeri ale tabloului
atribuiri
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
n secvena alturat de instruciuni, for(i=0;i<=4;i++){
for(.....)
variabilele i i j sunt de tip ntreg.
cout<<j<<' '; | printf("%d ",j);
cout<<endl; | printf("\n");
}
Rescriei secvena, completnd zona punctat astfel nct, n urma executrii secvenei
obinute, s se afieze pe ecran, n aceast ordine, numerele de mai jos.
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
(6p.)
3.

Se consider irul s,
alturat.

construit dup regula

Scriei un program C/C++ care citete de la tastatur un numr natural n (3<n<20) i


construiete n memorie un tablou unidimensional care memoreaz primii n termeni ai
irului s, definit dup regula de mai sus, astfel nct numerele impare s ocupe primele
poziii n tablou, iar cele pare s fie memorate n continuarea celor impare. Programul
afieaz pe ecran elementele tabloului construit, separate prin cte un spaiu.
Exemplu: dac n=6, primii ase termeni ai irului sunt 1, 1, 2, 5, 13, 34, iar tabloul
construit poate fi (1,1,5,13,2,34).
(10p.)
4.

Fiierul bac.in conine pe prima linie un numr natural n (3<n<1000), iar pe


urmtoarea linie, un ir de n numere naturale distincte, de cel mult nou cifre fiecare.
Numerele din ir sunt separate prin cte un spaiu i cel puin dou dintre ele au ultima
cifr egal cu 5.
a) Scriei un program C/C++ care citete toate numerele din fiier i, utiliznd un algoritm
eficient din punct de vedere al timpului de executare i al memoriei utilizate, determin i
afieaz pe ecran cele mai mari dou numere din ir care au ultima cifr egal cu 5.
Numerele determinate sunt afiate n ordine cresctoare, separate printr-un spaiu. (6p.)
Exemplu: dac fiierul bac.in are coninutul 10
alturat, pe ecran se vor afia, n aceast ordine, 97 5 11 1 8 6 85 3 25 15
numerele: 25 85
b) Descriei succint, n limbaj natural (3-4 rnduri), algoritmul utilizat la punctul a) i
justificai eficiena acestuia.
(4p.)

Prob scris la INFORMATIC


Specializarea tiine ale naturii

Varianta 8
Limbajul C/C++

august 2010
MI intensiv
(30 de puncte)

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.


1.

a.

Se consider subprogramul p, definit


alturat. Valoarea lui p(210, 49)
este:
1

b.

(4p.)

int p(int m, int n)


{ if(n==0) return 1;
return 1+p(n, m%n);
}
c.

d.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Avnd la dispoziie cinci flori diferite, lalea, narcis, mac, frezie, garoaf, se
utilizeaz metoda backtracking pentru a obine toate posibilitile de a forma un
aranjament floral, tiind c se folosesc toate cele cinci flori i conteaz ordinea de aezare
a acestora. Primele patru soluii obinute sunt, n aceast ordine: (lalea, narcis, mac,
frezie, garoaf), (lalea, narcis, mac, garoaf, frezie), (lalea, narcis,
frezie, mac, garoaf), (lalea, narcis, frezie, garoaf, mac). Scriei ultimele
dou soluii generate, n ordinea obinerii lor.
(6p.)

3.

Subprogramul tablou are trei parametri:


 n i k, prin care primete cte un numr natural (3n20, 2k10);
 a, prin care furnizeaz un tablou unidimensional care memoreaz un ir cresctor de
nk termeni, din mulimea primelor n numere naturale nenule, fiecare astfel de numr
fiind n ir de exact k ori.
Scriei n limbajul C/C++ definiia complet a subprogramului.
Exemplu: dac n=4, k=3 atunci, dup apel, a=(1,1,1,2,2,2,3,3,3,4,4,4). (10p.)

4.

Fiierul BAC.TXT conine, n ordine cresctoare, cel puin dou i cel mult 10000 de
numere naturale. Numerele sunt separate prin cte un spaiu i au cel mult 9 cifre fiecare.
Cel puin un numr din fiier apare o singur dat.
a) Scriei un program C/C++ care citete toate numerele din fiier i, printr-un algoritm
eficient din punct de vedere al timpului de executare i al memoriei utilizate, determin i
afieaz pe ecran, n ordine strict cresctoare, separate prin cte un spaiu, numai
numerele care apar o singur dat n fiier.
(6p.)
Exemplu: dac fiierul are coninutul de mai jos
1 1 2 2 2 7 10 10 10 10 21
pe ecran se afieaz, n aceast ordine, numerele 7 21.
b) Descriei n limbaj natural (3-4 rnduri) algoritmul utilizat la punctul a) i justificai
eficiena acestuia.
(4p.)

3
Prob scris la INFORMATIC
Specializarea matematic-informatic, intensiv informatic

Varianta 10
Limbajul C/C++

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea

august 2010 SN
(30 de puncte)

Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.


1.
Se consider dou tablouri unidimensionale A i B: A=(21,16,12,7,3), iar
B=(49,11,10,5,1). n urma interclasrii lor n ordine descresctoare se obine tabloul cu
elementele:
(4p.)
(49,16,12,7,3)
(49,21,11,16,10,12,5,7,1,3)
a.
b.
c. (49,21,16,11,12,10,7,5,3,1)
d. (49,21,16,12,11,10,7,5,3,1)
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
n secvena alturat de instruciuni, for(i=0;i<=4;i++){
for(.....)
variabilele i i j sunt de tip ntreg.
cout<<j<<' '; | printf("%d ",j);
cout<<endl; | printf("\n");
}
Rescriei secvena, completnd zona punctat astfel nct, n urma executrii secvenei
obinute, s se afieze pe ecran, n aceast ordine, numerele de mai jos.
4 3 2 1 0
3 2 1 0
2 1 0
1 0
0
(6p.)
3.

Scriei un program C/C++ care citete de la tastatur dou numere naturale, n i k


(3n20, 2k10), i construiete n memorie un tablou unidimensional ale crui
elemente reprezint, n ordine, cei nk termeni ai unui ir cresctor, valori din mulimea
primelor n numere naturale nenule, fiecare astfel de numr fiind n ir de exact k ori.
Programul afieaz pe ecran tabloul construit, numerele fiind separate prin cte un spaiu.
Exemplu: dac n=4, k=3 atunci tabloul construit este:(1,1,1,2,2,2,3,3,3,4,4,4).
(10p.)

4.

Fiierul BAC.TXT conine, n ordine cresctoare, cel puin dou i cel mult 10000 de
numere naturale. Numerele sunt separate prin cte un spaiu i au cel mult 9 cifre fiecare.
Cel puin un numr din fiier este par.
a) Scriei un program C/C++ care citete toate numerele din fiier i, printr-un algoritm
eficient din punct de vedere al timpului de executare i al memoriei utilizate, determin i
afieaz pe ecran, n ordine strict cresctoare, separate prin cte un spaiu, toate
numerele pare care apar n fiier. Fiecare numr se va afia o singur dat.
(6p.)
Exemplu: dac fiierul are coninutul de mai jos
1 1 2 2 2 7 10 10 10 10 24
pe ecran se afieaz, n aceast ordine, numerele 2 10 24.
b) Descriei n limbaj natural (3-4 rnduri) algoritmul utilizat la punctul a) i justificai
eficiena acestuia.
(4p.)

Prob scris la INFORMATIC


Specializarea tiine ale naturii

Varianta 10
Limbajul C/C++

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

model 2011 MI

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Se consider subprogramele recursive R1 i R2, definite mai jos.


long R2(int x, int p){
long R1(int x, int p){
long f;
if(p==0) return 1;
if(p==0) return 1;
return x*R1(x,p-1);
}
if(p%2==0) { f=R2(x,p/2);
return f*f;
}
return x*R2(x,p-1);
}
La apel, pentru parametrii x=3 i p=5, returneaz valoarea expresiei 35:
(4p.)
b. numai R1
c. numai R2
d. nici R1, nici R2
att R1, ct i R2

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Avnd la dispoziie cinci flori diferite, lalea, narcis, mac, frezie, garoaf, se
utilizeaz metoda backtracking pentru a obine toate posibilitile de a forma buchete de
cte trei flori, tiind c n cadrul unui buchet nu conteaz ordinea de aezare a florilor.
Primele patru soluii obinute sunt, n aceast ordine: (lalea, narcis, mac), (lalea,
narcis, frezie), (lalea, narcis, garoaf), (lalea, mac, frezie). Scriei
ultimele dou soluii generate, n ordinea obinerii lor.
(6p.)

3.

Subprogramul eval are trei parametri:


 a i b, prin care primete cte un numr ntreg cu cel mult patru cifre;
 rez, prin care furnizeaz numrul obinut prin nsumarea valorilor transmise prin
parametrii a i b.
Exemplu: dac a=3, b=5, n urma apelului, valoarea furnizat prin parametrul rez este
8.
a) Scriei numai antetul subprogramului eval.

(4p.)

b) Fiierul BAC.IN conine un ir de numere ntregi, cu cel mult dou cifre fiecare. n fiier
se afl cel puin dou i cel mult 100 de numere, separate prin cte un spaiu.
Scriei un program C/C++ care citete toate numerele din fiierul BAC.IN i, utiliznd
apeluri utile ale subprogramului eval, calculeaz suma acestora i apoi afieaz pe ecran
valoarea obinut.
Exemplu: dac fiierul conine numerele de mai jos, se va afia pe ecran valoarea 11.
2 12 -7 4
(6p.)
4.

Numim k-pereche ntr-un tablou unidimensional dou elemente cu valori egale ale
acestuia, ntre care se afl alte k elemente.
Scriei un program C/C++ care citete de la tastatur dou numere naturale, n i k
(3
n
100, 1
k
n-2), cele n elemente ale unui tablou unidimensional, numere naturale,
fiecare cu cel mult trei cifre, apoi afieaz pe ecran numrul de k-perechi din tabloul citit.
Exemplu: dac n=15, k=3, iar tabloul este

se va afia pe ecran valoarea 4.

(10p.)

Prob scris la Informatic


Specializrile matematic-informatic i matematic-informatic intensiv informatic
7

Limbajul C/C++

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

model 2011 SN

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
repet
1.
Se consider tabloul unidimensional v, cu elementele
ok
1
v1=1, v2=7, v3=5, v4=3. n algoritmul de sortare scris
pentru
i
1,3 execut
alturat, s-a notat cu a
b interschimbarea valorilor
dac vi>vi+1 atunci
variabilelor a i b.
ok
0
Pentru a sorta cresctor cele patru elemente ale

vi+1
i
tabloului v, numrul de interschimbri realizate prin
executarea secvenei alturate este:
(4p.)

pn cnd ok=1
a. 1
b. 2
c. 3
d. 4
Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.
2.
Se consider irul lui Fibonacci, n care primii doi termeni sunt f1=1, f2=1, iar al k-lea
(k>2) termen se calculeaz cu ajutorul formulei fk=fk-1+fk-2.
n secvena de mai jos, toate variabilele sunt de tip int. Scriei instruciunile care pot
nlocui zona punctat astfel nct, n urma executrii secvenei, s se afieze pe ecran
primii 20 de termeni ai irului lui Fibonacci, separai prin cte un spaiu.
f1=1; f2=1;
cout<<1 1 ; | printf(1 1 );
for(i=3;i<=20;i++){
f3=f1+f2;
..........
}
(6p.)
3.

Menionai, n limbaj natural, o condiie pe care trebuie s o ndeplineasc cele 100 de


elemente, cu valori distincte, ale unui tablou unidimensional, pentru a putea aplica asupra
acestuia metoda cutrii binare.
(4p.)

4.

Fiierul BAC.IN conine o expresie aritmetic format din numere naturale, cu


cel mult dou cifre fiecare, i operatorii aritmetici binari + i -. Expresia conine
cel puin unul i cel mult 100 de operatori i este corect. n fiier, fiecare
operand, respectiv operator al expresiei, se afl pe cte o linie.
Scriei un program C/C++ care citete expresia din fiierul BAC.IN, o evalueaz
i apoi afieaz pe ecran valoarea obinut.
Exemplu: dac fiierul are coninutul alturat, se va afia pe ecran valoarea 11.
(6p.)

5.

Numim k-pereche ntr-un tablou unidimensional dou elemente cu valori egale ale
acestuia, ntre care se afl alte k elemente.
Scriei un program C/C++ care citete de la tastatur dou numere naturale, n i k
(3
n
100, 1
k
n-2), cele n elemente ale unui tablou unidimensional, numere naturale,
fiecare cu cel mult trei cifre, apoi afieaz pe ecran numrul de k-perechi din tabloul citit.
Exemplu: dac n=15, k=3, iar tabloul este

se va afia pe ecran valoarea 4.

2
+
12
7
+
4

(10p.)

Prob scris la Informatic


Specializarea tiine ale naturii

Limbajul C/C++
6

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

iulie 2011 MI

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se consider subprogramele recursive C1 i C2, definite mai jos.


int C2 (int a, int b)
{ if(b==0) return a;
else return C2(b,a%b);
}

int C1 (int a, int b)


{ if(a==b) return a;
else if(a>b) return C1(a-b,b);
else return C1(a,b-a);
}

La apel, returneaz valoarea celui mai mare divizor comun al celor dou numere naturale
nenule primite ca parametri:
(4p.)
a.

numai C1

b.

numai C2

c.

att C1 ct i C2

d.

nici C1 nici C2

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Avnd la dispoziie cinci mrgele de culori diferite, rou, galben, verde, albastru,
violet, se utilizeaz metoda backtracking pentru a obine toate posibilitile de a forma
iruri de cte trei mrgele, tiind c n cadrul unui ir conteaz ordinea de aezare a
mrgelelor. Culorile mrgelelor, corespunztoare primelor patru soluii obinute sunt, n
aceast ordine: (rou, galben, verde), (rou, galben, albastru), (rou, galben,
violet), (rou, verde, galben). Scriei ultimele dou soluii generate, n ordinea
obinerii lor.
(6p.)

3.

Subprogramul inserare are doi parametri:


 n, prin care primete un numr natural (2n20);
 a, prin care primete un tablou unidimensional care memoreaz un ir de n numere
naturale, fiecare cu cel mult 4 cifre. Cel puin un element al tabloului este numr par.
Subprogramul modific tabloul astfel nct dup fiecare termen par al irului insereaz
valoarea 2011 i furnizeaz, tot prin parametrii n i a, valorile actualizate ale datelor
primite.
Scriei n limbajul C/C++ definiia complet a subprogramului.
Exemplu: dac n=7 i a=(1,4,5,3,82,6,2) atunci, dup apel,
n=11 i a=(1,4,2011,5,3,82,2011,6,2011,2,2011).
(10p.)

4.

Se citesc de la tastatur dou numere naturale s1 i s2 (0<s1


18, 0
s2
18) i se cere
scrierea n fiierul BAC.TXT, fiecare pe cte o linie, n ordine strict cresctoare, a tuturor
numerelor naturale cu exact 5 cifre, pentru care suma primelor dou cifre este egal cu
s1, iar suma ultimelor dou cifre este egal cu s2. Pentru determinarea numerelor
indicate se utilizeaz un algoritm eficient din punct de vedere al timpului de executare.
Exemplu: dac s1=8, iar s2=7, atunci 35725 este unul dintre numerele care respect
proprietatea cerut (3+5=8 i 2+5=7).
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++

Varianta 9

Filiera teoretic, profilul real, specializrile matematic informatic, matematic informatic intensiv informatic
Filiera vocaional, profilul militar, specializarea matematic informatic

iulie 2011 SN

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

n secvena de instruciuni de mai jos variabilele i, j i x sunt de tip ntreg.


0
1
2
3
4

1
2
3
4
5

2
3
4
5
6

3
4
5
6
7

4
5
6
7
8

for(i=0;i<5;i++){
for(j=0;j<5;j++){
x=......;
cout<<x<< ; | printf("%d ",x);
}
cout<<endl; | printf("\n");
}

Expresia care poate nlocui punctele de suspensie astfel nct, n urma executrii
secvenei obinute, s se afieze pe ecran valorile din figura de mai sus, n aceast ordine,
este:
(4p.)
a.

i-j

b.

i+j

c.

i*j

d.

j-i

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider tablourile unidimensionale x=(16,15,9,8,5) i y=(20,18,14,8,7).


Scriei elementele tabloului z, obinut prin interclasarea descresctoare a elementelor din
x i y. Valorile sunt scrise n ordinea n care acestea apar n tabloul z.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (2n20) i un


ir de n numere naturale, fiecare cu cel mult 4 cifre, dintre care cel puin unul este numr
par, construiete n memorie un tablou unidimensional care s conin termenii irului citit
i apoi modific tabloul, insernd dup fiecare termen par al irului numrul 2011.
Programul afieaz pe ecran numrul de elemente ale tabloului i, pe o linie nou a
ecranului, valorile memorate n tablou, separate prin cte un spaiu.
Exemplu: dac n=7, iar irul este 1,4,5,3,82,6,2 atunci pe ecran se afieaz
11
1 4 2011 5 3 82 2011 6 2011 2 2011
(10p.)

4.

Se citesc de la tastatur dou numere naturale s1 i s2 (0<s1


18, 0
s2
18) i se cere
scrierea n fiierul BAC.TXT, fiecare pe cte o linie, n ordine strict cresctoare, a tuturor
numerelor naturale cu exact 4 cifre, pentru care suma primelor dou cifre este egal cu
s1, iar suma ultimelor dou cifre este egal cu s2. Pentru determinarea numerelor indicate
se utilizeaz un algoritm eficient din punct de vedere al timpului de executare.
Exemplu: dac s1=8, iar s2=7, atunci 3525 este unul dintre numerele care respect
proprietatea cerut (3+5=8 i 2+5=7).
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++
Filiera teoretic, profilul real, specializarea tiine ale naturii
3

Varianta 9

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

iulie 2011 MI rezerva

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Utiliznd metoda backtracking se genereaz n ordine cresctoare toate numerele naturale


de cte patru cifre din mulimea A={1,2,3,4,5}, numere care nu conin dou cifre impare
alturate. Primele opt numere generate sunt, n aceast ordine, 1212, 1214, 1221, 1222,
1223, 1224, 1225, 1232. Ultimul numr generat este:
(4p.)
5455

b.

5454

c.

5452

d.

5445

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul f, definit alturat. int f (long x)


Scriei ce valori au f(0), respectiv { if(x>=123) return 1+f(x/10);
return 123;
f(123456).
}
(6p.)

3.

Subprogramul sub are trei parametri:


n, prin care primete un numr natural (0<n<100);
v, prin care primete un tablou unidimensional care memoreaz un ir de n numere
naturale, fiecare avnd cel puin dou cifre i cel mult patru cifre;
s, un numr natural (0
s<18).
Subprogramul determin i afieaz pe ecran, separate prin cte un spaiu, n ordine
descresctoare, toate numerele din ir care au suma dintre cifra unitilor i cifra zecilor
strict mai mare dect s. Dac irul nu conine niciun astfel de numr, subprogramul
afieaz pe ecran mesajul NU EXISTA. n urma apelului, tabloul transmis subprogramului
ca parametru nu se modific.
Scriei n limbajul C/C++ definiia complet a subprogramului sub.
Exemplu: pentru n=10, v=(351,149,3794,502,785,258,258,1512,489,693),
s=12 n urma apelului, subprogramul afieaz pe ecran, n aceast ordine, valorile:
3794 785 489 258 258 149.
(10p.)

4.

Fiierul BAC.TXT conine un ir de cel mult 1000 de numere naturale, desprite prin cte
un spaiu, fiecare numr avnd cel mult 9 cifre. Cel puin dou numere din fiier sunt
ptrate perfecte.
Se citete irul din fiier i se cere ca, utiliznd un algoritm eficient din punct de vedere al
memoriei utilizate i al timpului de executare, s se determine i s se afieze pe ecran
lungimea maxim a unei secvene a irului care ncepe i se ncheie cu cte un numr
ptrat perfect. O secven este format din termeni aflai pe poziii consecutive n ir.
Lungimea unei secvene este egal cu numrul de termeni ai acesteia.
Exemplu: dac fiierul BAC.TXT conine numerele
11 245 36 67 8 576 11 16 41 144 67 89 1011
pe ecran se afieaz 8 (corespunztor secvenei 36 67 8 576 11 16 41 144).
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++

Varianta 1

Filiera teoretic, profilul real, specializrile matematic informatic, matematic informatic intensiv informatic
Filiera vocaional, profilul militar, specializarea matematic informatic

august 2011 MI

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Utiliznd metoda backtracking se genereaz n ordine cresctoare numere naturale de cte


patru cifre din mulimea A={1,2,3,4,5}, numere care nu conin dou cifre impare
alturate. Primele opt numere generate sunt, n aceast ordine, 1212, 1214, 1221, 1222,
1223, 1224, 1225, 1232. Numrul de valori generate care au cifra miilor egal cu 2 i cifra
unitilor egal cu 4 este:
(4p.)
20

b.

16

c.

12

d.

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Scriei ce se afieaz n urma apelului de void f (int x)


mai jos pentru subprogramul f, definit { cout<<*; | printf(*);
if(x>0) {
alturat.
cout<<x; | printf(%d,x);
f(12345);
f(x/100);
(6p.)
cout<<*; | printf(*);
}
}

3.

Subprogramul inter are patru parametri:


na, nb prin care primete cte un numr natural (0<na<100, 0<nb<100);
a, b prin care primete cte un tablou unidimensional care memoreaz cte o mulime
de na, respectiv nb numere naturale, fiecare avnd cel mult patru cifre.
Subprogramul returneaz numrul de elemente aparinnd interseciei celor dou mulimi
menionate.
Scriei n limbajul C/C++ definiia complet a subprogramului inter.
Exemplu: pentru na=4, a=(35,149,72,3798), nb=5, b=(72,151,149,9,623), n
urma apelului, subprogramul returneaz valoarea 2.
(10p.)

4.

Fiierul BAC.TXT conine un ir de cel puin 11 i cel mult un milion de numere naturale,
desprite prin cte un spaiu. Fiecare numr are cel puin dou i cel mult nou cifre.
Primul termen al irului are numrul de ordine 1, al doilea are numrul de ordine 2 etc.
Se citete irul din fiier i se cere ca, utiliznd un algoritm eficient din punct de vedere al
timpului de executare, s se determine i s se afieze pe ecran numrul de ordine al unui
termen al irului care este precedat n fiier de un numr maxim de valori care au cifra
zecilor egal cu a sa. Dac sunt mai muli termeni cu aceast proprietate, se afieaz
numrul de ordine doar al unuia dintre ei.
Exemplu: dac fiierul BAC.TXT conine numerele
12 36 265 18 139 19 32 34 112 14 68
pe ecran se afieaz 10 (numrul de ordine al termenului 14).
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++

Varianta 3

Filiera teoretic, profilul real, specializrile matematic informatic, matematic informatic intensiv informatic
Filiera vocaional, profilul militar, specializarea matematic informatic

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

august 2011 SN

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se consider irurile de numere S1, S2 i S1: 1,13,27,48,52;


S3, scrise alturat. Pentru a aplica direct, S2: 98,85,70,59,27,11;
fr alte prelucrri prealabile, algoritmul de S3: 22,63,36,25,15.
interclasare a elementelor a dou dintre
irurile de mai sus, acestea pot fi:
(4p.)

a.

oricare dou dintre irurile de mai sus

b.

numai S1 i S2

c.

numai S1 i S3

d.

niciunele dintre irurile de mai sus

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

n
secvena
de
program
alturat variabilele x i y sunt
de tip char, iar celelalte
variabile sunt de tip int. Scriei
ce se afieaz n urma
executrii secvenei date. (6p.)

k=a-A; x=a;
for(m=1;m<=3;m++)
{
y=x-k+m;
cout<<x<<y; |
x=x+1;
}

printf(%c%c,x,y);

3.

Scriei un program C/C++ care citete de la tastatur dou numere naturale na i nb


(0<na<100, 0<nb<100) i elementele a dou tablouri unidimensionale a i b cu na,
respectiv nb elemente. Tablourile memoreaz elementele cte unei mulimi de numere
naturale, fiecare avnd cel mult patru cifre. Programul afieaz pe ecran numrul de
elemente aparinnd interseciei celor dou mulimi menionate.
Exemplu: pentru na=4, a=(35,149,72,3798), nb=5, b=(72,151,149,9,623),
programul afieaz pe ecran valoarea 2.
(10p.)

4.

Fiierul BAC.TXT conine un ir de cel mult un milion de numere naturale, desprite prin
cte un spaiu, fiecare numr avnd cel puin dou cifre i cel mult 9 cifre.
Se citesc numerele din fiier i se cere ca, utiliznd un algoritm eficient din punct de
vedere al timpului de executare, s se determine i s se afieze pe ecran numrul maxim
de termeni ai irului care au aceeai cifr a zecilor.
Exemplu: dac fiierul BAC.TXT conine numerele
12 36 265 18 139 19 32 34 112 14 68
pe ecran se afieaz 5 (pentru c sunt 5 termeni cu cifra zecilor 1).
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++
Filiera teoretic, profilul real, specializarea tiine ale naturii
3

Varianta 3

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

model 2012 MI

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se consider subprogramul recursiv CM, int CM (int x, int y, int z)


definit alturat. Pentru a returna valoarea { if(x%z==0 && y%z==0) return z;
else return CM(x,y,z-1);
celui mai mare divizor comun al numerelor
}
naturale 100 i 330, apelul subprogramului
poate fi:
(4p.)

a.

CM(1,100,330)

b.

CM(100,330,1)

c.

CM(100,330,100)

d.

CM(330,330,100)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Avnd la dispoziie cinci fructe diferite, un mr, o par, o gutuie, o cais, o piersic,
se utilizeaz metoda backtracking pentru a obine toate posibilitile de a forma grupe de
cte trei fructe, tiind c n cadrul unei grupe nu conteaz ordinea de aezare a fructelor.
Primele patru soluii obinute sunt, n aceast ordine: (mr, par, gutuie), (mr, par,
cais), (mr, par, piersic), (mr, gutuie, cais). Scriei ultimele dou soluii
generate, n ordinea obinerii lor.
(6p.)

3.

Subprogramul inserare are doi parametri:


 n, prin care primete un numr natural (2n20);
 a, prin care primete un tablou unidimensional care memoreaz un ir de n numere
naturale, fiecare cu cel mult 4 cifre. Cel puin un element al tabloului este numr par.
Subprogramul modific tabloul, insernd nainte de fiecare termen par al irului numrul
obinut prin mprirea la 2 a valorii acestuia i furnizeaz, tot prin parametrii n i a, valorile
actualizate ale datelor primite.
Scriei n limbajul C/C++ definiia complet a subprogramului.
Exemplu: dac n=7 i a=(1,4,5,3,82,6,2) atunci dup apel
n=11 i a=(1,2,4,5,3,41,82,3,6,1,2).
(10p.)

4.

Numim numr de tip palindrom un numr care are aceeai valoare dac este citit de la
stnga la dreapta sau de la dreapta la stnga.
Numim numr de tip dublu palindrom o valoare de tip palindrom cu numr par de cifre n
care fiecare cifr de rang impar este egal cu cifra alturat din dreapta ei.
Exemplu: 11111111, 22777722 sunt numere de tip dublu palindrom; 12122121 este
numr de tip palindrom, dar nu i dublu palindrom.
Se cere scrierea n fiierul BAC.TXT, fiecare pe cte o linie, a tuturor numerelor naturale
de tip dublu palindrom, cu exact 8 cifre. Numerele de tip dublu palindrom sunt scrise n
ordine strict cresctoare, iar pentru determinarea acestora se utilizeaz un algoritm
eficient din punct de vedere al timpului de executare.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++
Filiera teoretic, profilul real, specializrile matematic informatic, matematic informatic intensiv informatic
Filiera vocaional, profilul militar, specializarea matematic informatic

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

model 2012 SN

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

n secvena de instruciuni de mai jos variabilele i, j i x sunt de tip ntreg.


for(i=0;i<5;i++){
for(j=0;j<5;j++){
x=......;
cout<<x<< ; | printf("%d ",x);
}
cout<<endl; | printf("\n");
}

0 -1 -2 -3 -4
1 0 -1 -2 -3
2 1 0 -1 -2
3 2 1 0 -1
4 3 2 1 0

Expresia care poate nlocui punctele de suspensie astfel nct, n urma executrii
secvenei obinute, s se afieze pe ecran valorile din figura de mai sus, n aceast ordine,
este:
(4p.)
a.

i-j

b.

i+j

c.

i*j

d.

j-i

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider un tablou unidimensional n care elementele sunt, n aceast ordine,


(49,23,21,17,12,7,5). Pentru a afla indicele elementului din tablou cu valoarea x=21,
se aplic metoda cutrii binare.
Scriei succesiunea corect de elemente a cror valoare se compar cu valoarea lui x pe
parcursul metodei indicate.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (2n20) i un


ir de n numere naturale, fiecare cu cel mult 4 cifre, dintre care cel puin unul este numr
par, i construiete n memorie un tablou unidimensional care s conin termenii irului
citit i apoi modific tabloul, insernd nainte de fiecare termen par al irului numrul
obinut prin mprirea la 2 a valorii acestuia. Programul afieaz pe ecran numrul de
elemente ale tabloului i, pe o linie nou a ecranului, valorile memorate n tablou, separate
prin cte un spaiu.
Exemplu: dac n=7, iar irul este 1,4,5,3,82,6,2 atunci pe ecran se afieaz
11
1 2 4 5 3 41 82 3 6 1 2
(10p.)

4.

Numim numr de tip palindrom un numr care are aceeai valoare dac este citit de la
stnga la dreapta sau de la dreapta la stnga.
Numim numr de tip dublu palindrom o valoare de tip palindrom cu numr par de cifre n
care fiecare cifr de rang impar este egal cu cifra alturat din dreapta ei.
Exemplu: 111111, 227722 sunt numere de tip dublu palindrom; 121121 este numr de
tip palindrom, dar nu i dublu palindrom.
Se cere scrierea n fiierul BAC.TXT, fiecare pe cte o linie, a tuturor numerelor naturale
de tip dublu palindrom, cu exact 6 cifre. Numerele de tip dublu palindrom sunt scrise n
ordine strict cresctoare, iar pentru determinarea acestora se utilizeaz un algoritm eficient
din punct de vedere al timpului de executare i al memoriei utilizate.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++
Filiera teoretic, profilul real, specializarea tiine ale naturii
3

Ministerul Educaiei, Cercetrii, Tineretului i Sportului

bac special 2012 MI

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Algoritmul de generare a tuturor numerelor naturale de 5 cifre, fiecare numr avnd toate
cifrele nenule i distincte, este echivalent cu algoritmul de generare a:
(4p.)

a.

aranjamentelor de 9 elemente luate cte 5

b.

combinrilor de 9 elemente luate cte 5

c.

permutrilor a 5 elemente

d.

submulimilor unei mulimi cu 9 elemente

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul f, definit int f(int x)


{ if(x<=0)
alturat. Scriei valorile f(-6) i f(20).
return 0;
(6p.)
return x+f(x-5);
}

3.

Se consider subprogramul minus, cu doi parametri:


n, prin care primete o valoare natural 2<n<50;
v, prin care primete un tablou unidimensional cu n elemente, numere ntregi cu cel mult
4 cifre. Cel puin unul dintre elementele tabloului este nenul.
Dup fiecare element nenul din tablou, subprogramul insereaz cte un nou element, cu
aceeai valoare absolut, dar cu semn opus, ca n exemplu. Tabloul modificat, precum i
valoarea actualizat a lui n, sunt furnizate tot prin parametrii v, respectiv n.
Scriei n limbajul C/C++ definiia complet a subprogramului.
Exemplu: dac n=5 i v=(4, -5, 0, 9, 0),
atunci dup apel n=8, iar v=(4, -4, -5, 5, 0, 9, -9, 0).
(10p.)

4.

Fiierul bac.txt conine pe prima linie un numr natural par n cu cel mult patru cifre, iar
pe urmtoarea linie un ir de n numere naturale cu cel mult nou cifre. Numerele din ir
sunt n ordine cresctoare i sunt separate prin cte un spaiu.
Se cere s se afieze pe ecran cel mai mare numr din prima jumtate a irului care s fie
strict mai mic dect oricare numr din a doua jumtate a irului. Dac n fiier nu se afl o
astfel de valoare, pe ecran se afieaz mesajul Nu exista.
Pentru determinarea numrului cerut se utilizeaz un algoritm eficient din punctul de
vedere al memoriei i al timpului de executare.
Exemplu: dac fiierul bac.txt are coninutul
30
1 3 5 5 ... 5 5 7 10

de 26 de ori
atunci pe ecran se afieaz 3, iar dac fiierul are coninutul
6
3 3 3 3 9 15
atunci pe ecran se afieaz Nu exista.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++

Varianta 3

Filiera teroretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic


Filiera vocaional, profilul militar, specializarea matematic-informatic

Ministerul Educaiei, Cercetrii, Tineretului i Sportului

bac special 2012 SN

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

n secvena de instruciuni de mai jos toate variabilele sunt de tip ntreg.


for(i=1;i<=5;i++)
{ for(j=1;j<=5;j++)
cout<<......<< ; | printf(%d ,......);
cout<<endl; | printf(\n);
}

3 4 5 6 7
5 6 7 8 9
7 8 9 10 11
9 10 11 12 13
11 12 13 14 15

Indicai o expresie care poate nlocui punctele de suspensie astfel nct, n urma executrii
secvenei obinute, s se afieze pe ecran valorile din figura de mai sus, n aceast ordine.
(4p.)
a.

i+j+1

b.

2*i+j

c.

i+2*j-1

d.

i+2*j

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider un tablou unidimensional n care elementele sunt, n aceast ordine,


(2,5,6,15,42,60,75). Pentru a verifica dac n tablou exist elementul cu valoarea x,
se aplic metoda cutrii binare.
Scriei toate valorile pe care le poate avea x astfel nct cutarea s se ncheie dup ce x
a fost comparat cu exact dou elemente ale tabloului.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (2<n<50) i cele
n elemente ale unui tablou unidimensional, numere ntregi cu cel mult 4 cifre. Cel puin
unul dintre elementele tabloului este nenul. Dup fiecare element nenul din tablou,
programul insereaz cte un nou element, cu aceeai valoare absolut, dar cu semn
opus, ca n exemplu. Programul afieaz pe ecran valoarea actualizat a lui n i apoi, pe o
linie nou, elementele tabloului modificat, separate prin cte un spaiu.
Exemplu: pentru n=5 i tabloul (4, -5, 0, 9, 0),
se obin n=8 i tabloul (4, -4, -5, 5, 0, 9, -9, 0).
(10p.)

4.

Fiierul bac.txt conine pe prima linie un numr natural par n cu cel mult patru cifre, iar
pe urmtoarea linie un ir de n numere naturale cu cel mult nou cifre. Numerele din ir
sunt n ordine cresctoare i sunt separate prin cte un spaiu.
Se cere s se afieze pe ecran cel mai mic numr din ir care s fie strict mai mare dect
jumtate dintre toate numerele din ir. Dac n fiier nu se afl o astfel de valoare, pe
ecran se afieaz mesajul Nu exista.
Pentru determinarea numrului cerut se utilizeaz un algoritm eficient din punctul de
vedere al memoriei i al timpului de executare.
Exemplu: dac fiierul bac.txt are coninutul
30
1 3 3 ... 3 3 5 6

de 27 de ori
atunci pe ecran se afieaz 5, iar dac fiierul are coninutul
6
8 9 34 34 34 34
atunci pe ecran se afieaz Nu exista.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++

Varianta 3

Filiera teroretic, profilul real, specializarea tiine ale naturii

iulie 2012 MI

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Utiliznd metoda backtracking se genereaz, n ordine lexicografic, toate irurile de 5 cifre


din mulimea {0, 1, 2}, cu proprietatea c nu exist dou cifre pare pe poziii consecutive.
Primele opt iruri generate sunt, n aceast ordine: 01010, 01011, 01012, 01101, 01110,
01111, 01112, 01121. Al noulea ir generat este:
(4p.)
01120

b.

01201

c.

01210

d.

10101

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul f, definit void f(int x)


alturat. Scriei ce se afieaz n { cout<<x; | printf(%d,x);
if(x>0)
urma apelului de mai jos.
{ if(x%2==0)
f(9);
(6p.)
cout<<'*'; | printf(*);
f(x/2);
}
}

3.

Se consider subprogramul dublu, cu doi parametri:


n, prin care primete o valoare natural 2<n<50;
v, prin care primete un tablou unidimensional cu n elemente, numere ntregi cu cel mult
4 cifre. Cel puin unul dintre elementele tabloului este strict pozitiv.
Dup fiecare element strict pozitiv din tablou, subprogramul insereaz cte un nou
element, cu aceeai valoare, ca n exemplu. Tabloul modificat, precum i valoarea
actualizat a lui n, sunt furnizate tot prin parametrii v, respectiv n.
Scriei definiia complet a subprogramului.
Exemplu: dac n=6 i v=(4, -5, 0, 9, 9, -2), atunci dup apel
n=9, iar v=(4, 4, -5, 0, 9, 9, 9, 9, -2).
(10p.)

4.

Un numr natural cu cel puin dou cifre se numete x-ordonat dac toate cifrele sale
sunt n ordine cresctoare i valoarea absolut a diferenei dintre oricare dou cifre aflate
pe poziii consecutive este egal cu x.
Exemple: numrul 2468 este 2-ordonat, numrul 147 este 3-ordonat; numerele 179 sau
131 nu sunt de tipul menionat.
Se citete de la tastatur un numr natural x (1x8) i se cere scrierea n fiierul
BAC.TXT a tuturor numerelor naturale distincte x-ordonate. Fiecare numr este scris pe
cte o linie a fiierului.
Pentru determinarea numerelor cerute se utilizeaz un algoritm eficient din punctul de
vedere al timpului de executare.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++

Varianta 1

Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic


Filiera vocaional, profilul militar, specializarea matematic-informatic

iulie 2012 SN

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

n secvena de instruciuni de mai jos toate variabilele sunt de tip ntreg.


for(i=1;i<=5;i++)
{ for(j=1;j<=5;j++)
cout<<......<< ; | printf(%d ,......);
cout<<endl; | printf(\n);
}

2
3
4
0
1

3
4
0
1
2

4
0
1
2
3

0
1
2
3
4

1
2
3
4
0

Indicai o expresie care poate nlocui punctele de suspensie astfel nct, n urma executrii
secvenei obinute, s se afieze pe ecran valorile din figura de mai sus, n aceast ordine.
(4p.)
a.

i+j%5

b.

i%5+j

c.

(i+j)%5

d.

i%5+j%5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider tablourile unidimensionale a=(100,89,9,5,3) i b=(89,10,9,8,2,1).


Tabloul c este obinut prin interclasarea descresctoare a elementelor din tablourile a i b.
Scriei elementele tabloului c, n ordinea n care ele apar n acesta.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (2<n<50) i cele
n elemente ale unui tablou unidimensional, numere ntregi cu cel mult 4 cifre. Cel puin
unul dintre elementele tabloului este strict pozitiv. Programul modific tabloul, insernd
dup fiecare element strict pozitiv al acestuia, un nou element cu aceeai valoare.
Programul afieaz pe ecran valoarea actualizat a lui n i apoi, pe o linie nou,
elementele tabloului modificat, separate prin cte un spaiu.
Exemplu: pentru n=6 i tabloul (4, -5, 0, 9, 9, -2),
se obin n=9 i tabloul (4, 4, -5, 0, 9, 9, 9, 9, -2).
(10p.)

4.

Un numr natural cu cel puin dou cifre se numete 2-ordonat dac toate cifrele sale
sunt n ordine cresctoare i valoarea absolut a diferenei dintre oricare dou cifre aflate
pe poziii consecutive este egal cu 2.
Exemplu: numrul 2468 este 2-ordonat, dar numrul 131 nu este 2-ordonat.
Se cere scrierea n fiierul BAC.TXT a tuturor numerelor naturale 2-ordonate. Fiecare
numr este scris pe cte o linie a fiierului.
Pentru determinarea numerelor cerute se utilizeaz un algoritm eficient din punctul de
vedere al timpului de executare.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++

Varianta 1

Filiera teoretic, profilul real, specializarea tiine ale naturii

iulie 2012 MI
rezerva

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Utiliznd metoda backtracking se genereaz, n ordine lexicografic, toate irurile obinute


prin permutarea literelor din mulimea {b, r, a, d}. Primele dou iruri obinute sunt, n
aceast ordine, abdr i abrd. Al 5-lea ir generat este:
(4p.)
arbd

b.

ardb

c.

bdar

d.

bdra

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul f, definit void f(int x)


alturat. Scriei ce se afieaz n urma { if(x>0)
{ if(x%2==0)
apelului de mai jos.
cout<<'*'; | printf(*);
f(9);
f(x/2);
(6p.)
}
cout<<x+1; | printf(%d,x+1);
}

3.

Se consider subprogramul elimina, cu doi parametri:


n, prin care primete o valoare natural 2<n<50;
v, prin care primete un tablou unidimensional cu n elemente, numere ntregi cu cel mult
4 cifre. Cel puin dou dintre elementele alturate ale tabloului sunt nule.
Subprogramul elimin din tablou un numr minim de elemente astfel nct s nu existe
dou elemente alturate cu valoarea 0. Tabloul modificat, precum i valoarea actualizat a
lui n, sunt furnizate tot prin parametrii v, respectiv n.
Scriei definiia complet a subprogramului.
Exemplu: dac n=11 i v=(0, 2, 0, 0, 0, 0, -7, 0, 0, 3, 5), atunci dup apel n=7, iar
v=(0, 2, 0, -7, 0, 3, 5).
(10p.)

4.

Fiierul bac.txt conine cel puin dou i cel mult 1000000 numere ntregi, separate
prin cte un spaiu. Fiecare numr are cel mult 9 cifre.
Se cere s se afieze pe ecran, separate printr-un spaiu, cele mai mici dou valori
distincte memorate n fiier. Dac n fiier nu exist dou astfel de valori, pe ecran se
afieaz mesajul Nu exista.
Pentru determinarea numerelor cerute se utilizeaz un algoritm eficient din punctul de
vedere al memoriei i al timpului de executare.
Exemplu: dac fiierul bac.txt conine valorile 26 -9023 29 -9023 90 3 234
se afieaz pe ecran, nu neaprat n aceast ordine, numerele -9023 3.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++

Varianta 2

Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic


Filiera vocaional, profilul militar, specializarea matematic-informatic

Ministerul Educaiei, Cercetrii, Tineretului i Sportului

august 2012 MI

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Utiliznd metoda backtracking se genereaz, n ordine lexicografic, toate irurile de


maximum 4 litere distincte din mulimea {a, v, i, o, n}. Primele 5 iruri generate sunt, n
aceast ordine: a, ai, ain, aino, ainv. Imediat dup irul avn se genereaz:
(4p.)
avi

b.

avni

c.

avo

d.

iano

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul f, definit int f(int x,int y)


alturat. Scriei valorile f(3,4) i f(2,20). { if(x*2>y)
return x;
(6p.)
return f(x*2,y);
}

3.

Se consider subprogramul zero, cu doi parametri:


n, prin care primete o valoare natural 2<n<50;
v, prin care primete un tablou unidimensional cu 2n elemente, numere naturale cu cel
mult 4 cifre. Numrul de elemente pare este egal cu numrul de elemente impare.
Elementele au indici de la 1 la 2n.
Subprogramul modific tabloul astfel nct elementele impare s aib indici impari, iar
elementele pare s aib indici pari. Tabloul modificat este furnizat tot prin parametrul v.
Scriei definiia complet a subprogramului.
Exemplu: dac n=5 i v=(4, 5, 0, 9, 10, 7, 15, 3, 8, 10),
atunci dup apel o soluie posibil este: v=(5, 4, 9, 0, 15, 10, 7, 8, 3, 10).
(10p.)

4.

Fiierul bac.txt conine pe prima linie un numr natural par n cu cel mult 3 cifre, iar pe
urmtoarea linie un ir de n numere naturale cu cel mult nou cifre. Numerele din ir sunt
separate prin cte un spaiu.
Se cere s se afieze pe ecran mesajul Da dac n ir exist un element care s fie strict
mai mare dect jumtate dintre numerele din ir.
Dac n ir nu se afl o astfel de valoare, pe ecran se afieaz mesajul Nu.
Pentru determinarea numrului cerut se utilizeaz un algoritm eficient din punctul de
vedere al memoriei i al timpului de executare.
Exemplu: dac fiierul bac.txt are coninutul
6
8 34 34 34 5 34
atunci pe ecran se afieaz Nu, iar dac fiierul are coninutul
8
1 5 6 12 3 12 12 9
atunci pe ecran se afieaz Da.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++

Varianta 4

Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic


Filiera vocaional, profilul militar, specializarea matematic-informatic

august 2012 SN

Ministerul Educaiei, Cercetrii, Tineretului i Sportului


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

n secvena de instruciuni de mai jos toate variabilele sunt de tip ntreg.


for(i=1;i<=5;i++)
{ for(j=1;j<=5;j++)
cout<<......<< ; | printf(%d ,......);
cout<<endl; | printf(\n);
}

2
3
4
5
1

3
4
5
6
2

4
5
6
7
3

5
6
7
8
4

1
2
3
4
0

Indicai o expresie care poate nlocui punctele de suspensie astfel nct, n urma executrii
secvenei obinute, s se afieze pe ecran valorile din figura de mai sus, n aceast ordine.
(4p.)
a.

(i+j)%5

b.

i+j%5

c.

i%5+j%5

d.

i%5+j

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider un tablou unidimensional n care elementele sunt, n aceast ordine,


(2,5,7,8,49,50,75). Pentru a verifica dac n tablou exist elementul cu valoarea
x=50, se aplic metoda cutrii binare.
Scriei succesiunea de elemente cu care se compar valoarea x pe parcursul aplicrii
metodei indicate.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (2<n<50) i cele
2n elemente ale unui tablou unidimensional, numere ntregi cu cel mult 4 cifre. Numrul
de elemente pare este egal cu numrul de elemente impare. Elementele au indici de la 1
la 2n.
Programul modific apoi tabloul astfel nct elementele impare s aib indici impari, iar
elementele pare s aib indici pari. Programul afieaz pe ecran elementele tabloului
modificat, separate prin cte un spaiu.
Exemplu: pentru n=5 i tabloul (4, 5, 0, 9, 10, 7, 15, 3, 8, 10),
unul dintre tablourile care se pot obine este (5, 4, 9, 0, 15, 10, 7, 8, 3, 10).
(10p.)

4.

Fiierul bac.txt conine pe prima linie un numr natural n cu cel mult 3 cifre, iar pe
urmtoarea linie un ir de n numere naturale cu cel mult nou cifre. Numerele din ir sunt
separate prin cte un spaiu.
Se cere s se determine dou valori distincte din ir cu proprietatea c n intervalul nchis
delimitat de acestea se afl toi termenii irului. Valorile determinate se afieaz pe ecran,
separate printr-un spaiu.
Dac n ir nu se afl dou astfel de valori, pe ecran se afieaz mesajul Nu exista.
Pentru determinarea valorilor cerute se utilizeaz un algoritm eficient din punctul de
vedere al memoriei i al timpului de executare.
Exemplu: dac fiierul bac.txt are coninutul
6
8 34 34 34 5 34
atunci pe ecran se afieaz 5 34.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la Informatic


Limbajul C/C++

Varianta 4

Filiera teoretic, profilul real, specializarea tiine ale naturii

Ministerul Educaiei, Cercetrii, Tineretului i Sportului

model 2013 MI

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se consider subprogramele f1 i f2, definite mai jos, n care a este nenul.


int f1(int a, int b)
{
return (b/a)*a;
}

a.

int f2 (int a, int b)


{ if(b%a==0)
return b;
return f2(a, b-1);
}

Identificai subprogramul care, la apel, pentru parametrii a=3 i b=10, returneaz cel mai
mare multiplu al lui a mai mic sau egal cu b.
(4p.)
b. numai f1
c. numai f2
d. nici f1, nici f2
att f1, ct i f2

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Utiliznd metoda bactracking se genereaz toate numerele cu cifre distincte i nenule,


numere care au suma cifrelor egal cu 10. Primele patru soluii generate sunt, n aceast
ordine: 1234, 1243, 127, 1324. Scriei cea de a cincea i cea de a asea soluie, n
ordinea generrii acestora.
(6p.)

3.

Se consider subprogramul num, cu doi parametri:


n, prin care primete o valoare natural 2<n<50;
v, prin care primete un tablou unidimensional cu n elemente, numere ntregi cu cel mult
4 cifre.
Subprogramul nlocuiete cu 0 fiecare valoare mai mic sau egal cu prima valoare din
tablou. Tabloul modificat este furnizat tot prin parametrul v.
Scriei definiia complet a subprogramului.
Exemplu: dac n=7 i v=(4, 5, 0, 9, 3, 4, -2), atunci dup apel
v=(0, 5, 0, 9, 0, 0, 0).
(10p.)

4.

Fiierul numere.in memoreaz cel mult 1000000 de numere naturale cu cel mult nou
cifre. Numerele sunt ordonate strict cresctor i separate prin cte un spaiu.
Se consider irul 1, 4, 7 .... definit astfel: f1=1, f2=4 i fn=2fn-1-fn-2, pentru n>2.
Se cere s se afieze pe ecran numerele din fiier care sunt termeni ai irului. Numerele
sunt afiate n ordine strict cresctoare, separate prin cte un spaiu. Dac nu exist astfel
de numere se afieaz pe ecran mesajul Nu exista.
Pentru determinarea numerelor cerute se utilizeaz un algoritm eficient din punctul de
vedere al memoriei i al timpului de executare.
Exemplu: dac fiierul numere.in conine numerele 1 2 5 7 17 30, se afieaz pe
ecran numerele 1 7.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++
Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic
Filiera vocaional, profilul militar, specializarea matematic-informatic

Ministerul Educaiei, Cercetrii, Tineretului i Sportului

model 2013 SN

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
Se consider irurile de numere S1, S2 i S1: 1,12,27,49,50;
S3, scrise alturat. Algoritmul de cutare S2: 98,85,70,59,27,11;
binar se poate aplica direct, fr alte S3: 21,64,36,25,16.
prelucrri prealabile:
(4p.)

1.

a. doar irului S1

b. doar irului S1 i irului S2

c. doar irului S2 i irului S3

d. oricruia dintre cele trei iruri

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


min=100;
for(i=1;i<=10;i++)
{ cin>>x; | scanf(%d,&x);
if(.............)
min=x;
}

2.

n secvena alturat toate variabilele sunt de tip


ntreg. Numerele citite sunt naturale, cu cel mult
dou cifre i cel puin unul dintre ele este impar.
Scriei expresia care poate nlocui punctele de
suspensie astfel nct, n urma executrii
secvenei obinute, valoarea variabilei min s fie
egal cu cel mai mic numr impar citit.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (2<n<50) i cele
n elemente ale unui tablou unidimensional, numere ntregi cu cel mult 4 cifre. Programul
nlocuiete cu 0 fiecare valoare mai mic sau egal cu prima valoare din tablou, apoi
afieaz pe ecran elementele tabloului modificat, separate prin cte un spaiu.
Exemplu: pentru n=7 i tabloul (4, 5, 0, 9, 3, 4, -2),
se obine tabloul (0, 5, 0, 9, 0, 0, 0).
(10p.)

4.

Se consider irul 1, 4, 7 .... definit astfel: f1=1, f2=4 i fn=2fn-1-fn-2, pentru n>2.
Se citesc de la tastatur dou numere naturale cu maximum patru cifre fiecare, a i b
(0<a<b) i se cere s se scrie n fiierul numere.out toi termenii irului care se afl n
intervalul [a,b]. Termenii sunt scrii n ordine strict cresctoare, separai prin cte un
spaiu.
Dac nu exist astfel de termeni, n fiier se scrie mesajul Nu exista.
Pentru determinarea termenilor cerui se utilizeaz un algoritm eficient din punctul de
vedere al memoriei.
Exemplu: dac a=3 i b=8, atunci fiierul numere.out conine numerele 4 7.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++
Filiera teoretic, profilul real, specializarea tiine ale naturii

Ministerul Educaiei Naionale

bac special 2013 MI

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se consider subprogramele f1 i f2, definite mai jos.


int f1(int n)
{ return n*(n+1)/2;
}

a.

int f2 (int n)
{ if(n>0)
return n+f2(n-1);
return 0;
}

Identificai subprogramul care, la apel, pentru parametrul n=10, returneaz suma primelor
10 numere naturale nenule.
(4p.)
b. numai f1
c. numai f2
d. nici f1, nici f2
att f1, ct i f2

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Utiliznd metoda backtracking se genereaz toate submulimile cu cel mult patru elemente
din mulimea {3, 5, 6, 7, 8}. Primele ase soluii generate sunt, n aceast ordine: {3}, {3, 5},
{3, 5, 6}, { 3, 5, 6, 7}, {3, 5, 6, 8}, {3, 5, 7}. Scriei cea de a aptea i cea de a opta soluie,
n ordinea generrii acestora.
(6p.)

3.

Se consider subprogramul sub, cu trei parametri:


n, prin care primete un numr natural (2<n<50);
v, prin care primete un tablou unidimensional cu n elemente, numere naturale cu cel
mult 4 cifre;
x, prin care primete un numr natural cu cel mult 4 cifre. Cel puin unul dintre
elementele tabloului are valoarea x.
Subprogramul modific ordinea valorilor din tablou, astfel nct toate valorile egale cu x s
ocupe primele poziii din v, iar celelalte valori s se regseasc n continuarea acestora.
Tabloul modificat este furnizat tot prin parametrul v.
Scriei definiia complet a subprogramului.
Exemplu: dac n=9, v=(2, 1, 0, 1, 7, 0, 1, 4, 5) i x=1, atunci, dup apel, o soluie
posibil este v=(1, 1, 1, 2, 0, 7, 0, 4, 5).
(10p.)

4.

Fiierul bac.txt conine un ir de cel puin trei i cel mult 1000000 de numere naturale
cu cel mult nou cifre. Numerele din ir sunt separate prin cte un spaiu.
Se cere s se afieze pe ecran, separate printr-un spaiu, dou numere distincte, anume
cel mai mic numr par cu dou cifre i cel mai mare numr par cu dou cifre care NU fac
parte din ir.
Dac nu exist dou astfel de valori, pe ecran se afieaz mesajul Nu exista.
Pentru determinarea numerelor cerute se utilizeaz un algoritm eficient din punctul de
vedere al timpului de executare.
Exemplu: dac fiierul bac.txt conine valorile
7 2 40 5 10 15 11 12 18 350
se afieaz pe ecran numerele 14 98.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

Varianta 7

Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic


Filiera vocaional, profilul militar, specializarea matematic-informatic

iulie 2013 MI

Ministerul Educaiei Naionale


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se consider subprogramele f1 i f2, definite mai jos.


int f1 (int x, int y)
{
return x*y;
}

int f2 (int x, int y)


{ if (y==1) return x;
else return x*f2(x, y-1);
}

La apel, pentru parametrii x=2 i y=3, returneaz xy:


a.

att f1, ct i f2

b.

c.

numai f1

numai f2

(4p.)
d.

nici f1, nici f2

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Utiliznd metoda backtracking se genereaz toate cuvintele de 5 litere din mulimea {A, M},
cuvinte care ncep i se termin cu M. Primele patru soluii generate sunt, n aceast
ordine: MAAAM, MAAMM, MAMAM, MAMMM. Scriei cea de a cincea i cea de a asea soluie,
n ordinea generrii acestora.
(6p.)

3.

Se consider subprogramul valuri, cu doi parametri:


n, prin care primete o valoare natural 2<n<50;
v, prin care furnizeaz un tablou unidimensional cu 2n elemente, valori ntregi din
intervalul [1, 2n].
Subprogramul construiete tabloul v astfel nct, n acesta, irul elementelor impare s fie
strict cresctor, iar irul elementelor pare s fie strict descresctor. Primul element al
tabloului este impar, iar dou elemente cu aceeai paritate nu pot ocupa poziii
consecutive n tablou, ca n exemplu.
Scriei definiia complet a subprogramului.
Exemplu: dac n=4 atunci, dup apel, v=( 1, 8, 3, 6, 5, 4, 7, 2).
(10p.)

4.

Se consider irul definit alturat (unde n este


1,
un numr natural nenul), n care nu exist doi

termeni cu aceeai paritate aflai pe poziii fn = 1 + fn-1,

consecutive:
1 + 2 fn-2,
1, 2, 3, 4, 7, 8, 15, 16 ....

dac n = 1
dac

par

altfel

Se citete de la tastatur un numr natural x, cu cel mult nou cifre, termen al irului dat,
i se cere s se scrie n fiierul text bac.txt, n ordine strict descresctoare, separai prin
cte un spaiu, toi termenii irului care sunt mai mici sau egali cu x.
Pentru determinarea termenilor cerui se utilizeaz un algoritm eficient din punctul de
vedere al memoriei utilizate i al timpului de executare.
Exemplu: dac x=15, fiierul bac.txt conine numerele
15 8 7 4 3 2 1
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

Varianta 2

Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic


Filiera vocaional, profilul militar, specializarea matematic-informatic

Ministerul Educaiei Naionale

iulie 2013 SN

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Pentru a verifica dac ntr-un tablou unidimensional exist elementul cu valoarea x=9, se
aplic metoda cutrii binare, iar succesiunea de elemente ale tabloului a cror valoare se
compar cu valoarea lui x pe parcursul aplicrii metodei indicate este: 12, 7, 9.
Elementele tabloului pot fi (n ordinea n care apar n tablou):
(4p.)

a.

(4,7,8,9,12,20,45)

b.

(4,7,9,12,16,20,45)

c.

(7,9,10,12,16,20,45)

d.

(10,12,7,9,45,20,16)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


ok=1;
for(i=1;i<=10;i++)
{ cin>>x; | scanf(%d,&x);
.......
}

2.

n secvena alturat, toate variabilele sunt de


tip ntreg.
Scriei instruciunea sau instruciunile care pot
nlocui punctele de suspensie astfel nct, n
urma executrii secvenei obinute, valoarea
variabilei ok s fie 1 dac toate numerele citite
sunt egale cu 2013, sau valoarea 0 altfel. (6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (2<n<50) i


construiete n memorie un tablou unidimensional cu 2n elemente, valori naturale din
intervalul [1, 2n], astfel nct irul elementelor impare s fie strict cresctor, iar irul
elementelor pare s fie strict descresctor. Primul element al tabloului este impar, iar dou
elemente cu aceeai paritate nu pot ocupa poziii consecutive n tablou, ca n exemplu.
Programul afieaz apoi pe ecran elementele tabloului obinut, separate prin cte un
spaiu.
Exemplu: dac n=4 atunci se obine tabloul(1, 8, 3, 6, 5, 4, 7, 2).
(10p.)

4.

Se consider irul definit alturat (unde n este


1,

un numr natural nenul), n care nu exist doi


f
=
1 + fn-1,
n
termeni cu aceeai paritate aflai pe poziii

consecutive:
1 + 2 fn-1,
1, 2, 5, 6, 13, 14, 29, 30 ....

dac n = 1
dac n par
altfel

Se citete de la tastatur un numr natural x, cu cel mult nou cifre, termen al irului dat,
i se cere s se scrie n fiierul text bac.txt, n ordine strict descresctoare, separai prin
cte un spaiu, toi termenii irului care sunt mai mici sau egali cu x.
Se utilizeaz un algoritm eficient din punctul de vedere al memoriei utilizate i al timpului
de executare.
Exemplu: dac x=29, fiierul bac.txt conine numerele
29 14 13 6 5 2 1
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

Varianta 2

Filiera teoretic, profilul real, specializarea tiine ale naturii

Ministerul Educaiei Naionale

august 2013 MI

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Se consider subprogramul f, definit void f (int n)


alturat. Indicai ce se afieaz n urma { if (n!=0)
{ f (n-1);
apelului de mai jos.
cout<<n; |
f(3);
(4p.)
}
}
12

b.

123

c.

321

printf(%d,n);

d.

3210

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Utiliznd metoda backtracking, se genereaz n ordine lexicografic toate irurile de cte 5


litere distincte din mulimea {A, B, C, D, E}, astfel nct n fiecare ir litera D precede literele
A i B. Primele cinci soluii generate sunt, n aceast ordine: CDABE, CDAEB, CDBAE,
CDBEA, CDEAB. Scriei cea de a asea i cea de a aptea soluie, n ordinea generrii
acestora.
(6p.)

3.

Se consider subprogramul sub, cu trei parametri:


n, prin care primete un numr natural (2<n<50);
v, prin care primete un tablou unidimensional cu n elemente, numere naturale cu cel
mult 4 cifre;
k, prin care primete un numr natural (1<kn).
Subprogramul returneaz suma primelor k elemente cu valoare impar ale tabloului. Dac
nu exist k elemente impare n tablou, subprogramul returneaz valoarea -1.
Scriei definiia complet a subprogramului.
Exemplu: dac n=8, v=(2, 7, 6, 8, 3, 7, 5, 1), k=3, atunci subprogramul returneaz
valoarea 17 (7+3+7=17).
(10p.)

4.

Fiind date dou numere a i b, l numim pe a sufix al lui b dac a este egal cu b sau dac
b se poate obine din a prin alipirea la stnga a unor noi cifre.
Exemplu: 12 este sufix al lui 12, iar 15 este sufix al lui 31415.
Fiierul bac.txt conine pe prima linie un numr natural x, cu cel mult nou cifre, iar pe a
doua linie un ir de cel puin dou i cel mult 1000000 de numere naturale cu cel mult
nou cifre. Numerele din ir sunt separate prin cte un spaiu.
Se cere s se afieze pe ecran ultimul termen al irului care are ca sufix numrul x. Dac
n ir nu exist o astfel de valoare, pe ecran se afieaz mesajul Nu exista.
Pentru determinarea numrului cerut se utilizeaz un algoritm eficient din punctul de
vedere al memoriei i al timpului de executare.
Exemplu: dac fiierul bac.txt conine numerele
12
3445 89312 1245 12 67120 312 1234578
atunci pe ecran se afieaz 312.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

Varianta 6

Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic


Filiera vocaional, profilul militar, specializarea matematic-informatic

Ministerul Educaiei Naionale

august 2013 SN

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se consider un tablou unidimensional n care elementele sunt, n aceast ordine,


(4,7,10,12,15,21,49). Pentru a verifica dac n tablou exist elementul cu valoarea
x=16, se aplic metoda cutrii binare.
Succesiunea corect de elemente a cror valoare se compar cu valoarea lui x pe
parcursul aplicrii metodei indicate este:
(4p.)

a.

4, 7, 10, 12, 15

b.

c.

12, 15, 21

12, 21, 15

d.

49, 21, 15

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


nr=0;
for(i=1;i<=10;i++)
{ cin>>x; | scanf(%d,&x);
..........
}

2.

n secvena alturat toate variabilele sunt de tip


ntreg.
Scriei instruciunea sau instruciunile care pot
nlocui punctele de suspensie astfel nct, n
urma executrii secvenei obinute, valoarea
variabilei nr s fie egal cu numrul valorilor
strict pozitive citite.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (2<n<50), cele
n elemente ale unui tablou unidimensional, numere naturale cu cel mult 4 cifre, apoi un
numr natural k (1<kn). Programul determin i afieaz pe ecran suma primelor k
elemente ale tabloului care au valoare impar sau valoarea -1 dac nu exist k elemente
impare n tablou.
Exemplu: pentru n=8, tabloul (2, 7, 6, 8, 3, 7, 5, 1) i k=3, se obine valoarea 17
(7+3+7=17).
(10p.)

4.

Fiierul bac.txt conine pe prima linie un numr natural cu cel mult nou cifre, x, iar pe
a doua linie un ir de cel puin dou i cel mult 1000000 de numere naturale cu cel mult
nou cifre. Numerele din ir sunt separate prin cte un spaiu.
Se cere s se afieze pe ecran penultimul termen al irului care are ultima cifr egal cu
prima cifr a numrului x. Dac n ir nu exist o astfel de valoare, pe ecran se afieaz
mesajul Nu exista.
Pentru determinarea numrului cerut se utilizeaz un algoritm eficient din punctul de
vedere al memoriei i al timpului de executare.
Exemplu: dac fiierul bac.txt conine numerele
12
345 8911 1245 51 67123 931 1234578
atunci pe ecran se afieaz 51.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

Varianta 6

Filiera teoretic, profilul real, specializarea tiine ale naturii

Ministerul Educaiei Naionale

model 2014 MI

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se consider subprogramele f1 i f2, definite mai jos.


long f1 (int n)
{ if(n<10)
return n*f1(n+1);
return 10;
}

a.

long f2 (int n)
{ if(n>1)
return n*f2(n-1);
return 1;
}

Identificai subprogramul care, la apel, pentru parametrul n=10, returneaz produsul


primelor 10 numere naturale nenule.
(4p.)
b. numai f1
c. numai f2
d. nici f1, nici f2
att f1, ct i f2

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Alfabetul Morse este format doar din simbolurile linie (notat cu -) i punct (notat cu ).
Utiliznd metoda bactracking se genereaz toate cuvintele scrise n alfabetul Morse,
formate din cte 5 simboluri, care ncep i se termin cu punct. Primele patru soluii
generate sunt, n aceast ordine:
- - -
- -
- -
-
Scriei cea de a cincea i cea de a asea soluie, n ordinea generrii acestora.
(6p.)

3.

Se consider subprogramul divizor, cu doi parametri:


n, prin care primete un numr natural cu cel mult nou cifre (n>1);
d, prin care furnizeaz cel mai mare divizor prim al lui n.
Scriei definiia complet a subprogramului.
Exemplu: pentru n=50, dup apel d=5, iar pentru n=11, dup apel d=11.

4.

(10p.)

Fiierul bac.txt conine pe prima linie un numr natural par n cu cel mult patru cifre, iar
pe urmtoarea linie un ir de n numere naturale cu cel mult nou cifre. Numerele din ir
sunt n ordine descresctoare i sunt separate prin cte un spaiu.
Se cere s se afieze pe ecran cel mai mic numr din prima jumtate a irului care s fie
strict mai mare dect oricare numr din a doua jumtate a irului. Dac n fiier nu se afl
o astfel de valoare, pe ecran se afieaz mesajul Nu exista.
Pentru determinarea numrului cerut se utilizeaz un algoritm eficient din punctul de
vedere al memoriei i al timpului de executare.
Exemplu: dac fiierul bac.txt are coninutul
30
16 8 7 7 ... 7 7 2 1
de 26 de ori
atunci pe ecran se afieaz 8, iar dac fiierul are coninutul
6
7 7 7 7 2 1
atunci pe ecran se afieaz Nu exista.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

MODEL

Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic


Filiera vocaional, profilul militar, specializarea matematic-informatic

Ministerul Educaiei Naionale

model 2014 SN

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Se consider un tablou unidimensional n care elementele sunt, n aceast ordine,


(2,5,9,10,11,25,50). Pentru a verifica dac n tablou exist elementul cu valoarea
x=7, se aplic metoda cutrii binare.
Succesiunea corect de elemente a cror valoare se compar cu valoarea lui x pe
parcursul aplicrii metodei indicate este:
(4p.)

a.

2, 5, 9

b.

2, 9, 11, 50

c.

10, 5, 9

d.

50, 2, 11, 9

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


ok=1;
for(i=1;i<=10;i++)
{ cin>>x; | scanf(%d,&x);
...............
}

2.

n secvena alturat toate variabilele sunt de tip


ntreg.
Scriei instruciunea sau instruciunile care pot
nlocui punctele de suspensie astfel nct, n
urma executrii secvenei obinute, valoarea
variabilei ok s fie 1 dac oricare dintre
numerele citite este diferit de 2014, sau
valoarea 0 altfel.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (2<n<50) i cele
n elemente ale unui tablou unidimensional, numere naturale cu cel mult patru cifre, dintre
care cel puin dou au paritate diferit. Programul determin apoi transformarea n
memorie a tabloului citit prin eliminarea primului numr par, apoi afieaz pe ecran
elementele tabloului obinut.
Exemplu: pentru n=11 i tabloul (1, 3, 2, 4, 0, 5, 8, 7, 6, 10, 3)
se obine tabloul (1, 3, 4, 0, 5, 8, 7, 6, 10, 3)
(10p.)

4.

Fiierul bac.txt conine pe prima linie un numr natural par n cu cel mult patru cifre, iar
pe urmtoarea linie un ir de n numere naturale cu cel mult nou cifre. Numerele din ir
sunt n ordine descresctoare i sunt separate prin cte un spaiu.
Se cere s se afieze pe ecran cel mai mare numr din ir care s fie strict mai mic dect
jumtate dintre toate numerele din ir. Dac n fiier nu se afl o astfel de valoare, pe
ecran se afieaz mesajul Nu exista.
Pentru determinarea numrului cerut se utilizeaz un algoritm eficient din punctul de
vedere al memoriei i al timpului de executare.
Exemplu: dac fiierul bac.txt are coninutul
30
16 7 7 7 ... 7 7 2 1
de 27 de ori
atunci pe ecran se afieaz 2, iar dac fiierul are coninutul
6
16 8 7 7 7 7
atunci pe ecran se afieaz Nu exista.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

MODEL

Filiera teoretic, profilul real, specializarea tiine ale naturii

bac special 2014

Ministerul Educaiei Naionale


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Utiliznd metoda backtracking, se genereaz toate posibilitile de a obine suma 4 cu


numere naturale nenule. Dou sume sunt distincte dac difer prin cel puin un termen.
Soluiile generate sunt, n aceast ordine, 1+1+1+1, 1+1+2, 1+3, 2+2.
Aplicnd acelai algoritm pentru a genera toate posibilitile de a obine suma 6, dac
prima soluie generat este 1+1+1+1+1+1, atunci soluia 1+2+3 este generat:
(4p.)
a 6-a

b.

c.

a 7-a

a 8-a

d.

a 9-a

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul f, definit int f(int a, int b)


{ if (a==b) return 0;
alturat. Scriei valorile f(5,5) i
if (b/a==0) return a+b;
f(10,21).
(6p.)
return f(a+2,b-3);
}

3.

Un numr natural nenul se numete perfect dac este egal cu suma divizorilor si naturali
strict mai mici dect el.
Exemplu: 28 este numr perfect pentru c 28=1+2+4+7+14.
Se consider subprogramul perfect, cu doi parametri, a i b, prin care primete cte un
numr natural (2a<b109). Subprogramul afieaz pe ecran, separate prin cte un
spaiu, n ordine descresctoare, toate numerele perfecte din intervalul [a,b]. Dac n
interval nu exist astfel de numere, subprogramul afieaz pe ecran mesajul nu exista.
Scriei definiia complet a subprogramului.
Exemplu: pentru a=5 i b=30, se afieaz pe ecran: 28 6
(10p.)

4.

Numim secven uniform a unui ir de numere naturale un subir al acestuia, format din
termeni cu aceeai valoare, aflai pe poziii consecutive n irul dat. Lungimea secvenei
este egal cu numrul de termeni ai acesteia.
Fiierul bac.txt conine un ir de cel puin dou i cel mult 1000000000 de numere
naturale din intervalul [0, 109]. Numerele sunt separate prin cte un spaiu, iar n ir exist
cel puin doi termeni egali pe poziii consecutive.
Se cere s se determine o secven uniform de lungime maxim n irul aflat n fiier i
s se afieze pe ecran lungimea acestei secvene i, pe o linie nou, separai prin cte un
spaiu, termenii acesteia. Dac sunt mai multe astfel de secvene, se afieaz doar
termenii ultimei dintre acestea. Pentru determinarea numerelor cerute se utilizeaz un
algoritm eficient din punctul de vedere al memoriei necesare i al timpului de executare.
Exemplu: dac fiierul bac.txt conine numerele
2 3 3 3 3 5 4 4 11 11 11 11 16 11 11 11 11 15 15
atunci pe ecran se afieaz valorile
4
11 11 11 11
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

Varianta 2

Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic


Filiera vocaional, profilul militar, specializarea matematic-informatic

iulie 2014 MI

Ministerul Educaiei Naionale


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Se consider subprogramul f, definit


alturat. Indicai ce valoare are f(15).
(4p.)

b.

c.

int f(int n)
{ if (n<10) return f(n+1)+3;
else if (n==10) return 7;
else return f(n-2)-1;
}
8

d.

10

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Utiliznd metoda backtracking, se genereaz toate posibilitile de a forma iraguri de cte


4 mrgele de culori distincte din mulimea {rou, galben, roz, albastru, violet},
astfel nct n fiecare irag nu pot fi pe poziii alturate mrgele roii i galbene. Dou
iraguri sunt distincte dac au cel puin o mrgea de culoare diferit sau dac ordinea
culorilor mrgelelor este diferit.
Primele cinci soluii generate sunt, n aceast ordine, (rou, roz, galben, albastru),
(rou, roz, galben, violet), (rou, roz, albastru, galben), (rou, roz,
albastru, violet), (rou, roz, violet, galben). Scriei cea de a asea i cea de a
aptea soluie, n ordinea generrii acestora.
(6p.)

3.

Un interval cu proprietatea c exist un singur numr natural, n (2n), pentru care valoarea
produsului 123n aparine acestui interval este numit interval factorial al lui n.
Exemplu: [5,8] i [3,23] sunt intervale factoriale ale lui 3, dar [1,15] i [7,10] nu
sunt intervale factoriale ale niciunui numr.
Se consider subprogramul interval, cu trei parametri:
n, prin care primete un numr natural din intervalul [2,10].
a i b, prin care furnizeaz cte un numr natural, astfel nct expresia b-a s aib
valoare maxim, iar [a,b] s fie interval factorial al lui n.
Scriei definiia complet a subprogramului.
Exemplu: dac n=3, dup apel a=3 i b=23.
(10p.)

4.

Un numr natural x, format din exact dou cifre, este numit sub-numr al unui numr
natural y dac cifrele lui x apar, n aceeai ordine, pe ranguri consecutive, n numrul y.
Exemplu: 21 este sub-numr al lui 12145, al lui 213, al lui 21, dar nu i al lui 123 sau al
lui 231.
Fiierul bac.txt conine cel mult 1000000 de numere naturale din intervalul [10, 109],
separate prin cte un spaiu.
Se cere s se afieze pe ecran, separate prin cte un spaiu, sub-numerele care apar de
cele mai multe ori n scrierea numerelor din fiier. Pentru determinarea sub-numerelor
cerute se utilizeaz un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dac fiierul bac.txt conine numerele
393 17775787 72194942 12121774
atunci pe ecran se afieaz valorile de mai jos, nu neaprat n aceast ordine:
77 21
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
b) Scriei programul C/C++ corespunztor algoritmului descris.

Prob scris la informatic


Limbajul C/C++

(4p.)
(6p.)

Varianta 4

Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic


Filiera vocaional, profilul militar, specializarea matematic-informatic

Ministerul Educaiei Naionale

iulie 2014 SN

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Se consider dou tablouri unidimensionale A i B. tiind c A=(4,11,14,18,21), iar n
urma interclasrii tablourilor A i B n ordine cresctoare se obine tabloul cu elementele
(3,4,8,11,14,14,17,18,21,46), atunci tabloul B poate fi:
(4p.)
a.

(46,17,8,3)

b. (46,17,14,8,3)

c. (46,18,14,8,3)

d. (46,21,14,17,3)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


ok=.........;
for(i=1;i<=10;i++)
{ cin>>x; | scanf("%d",&x);
.......
}

2.

n secvena alturat toate variabilele sunt de tip


ntreg, iar numerele citite sunt naturale.
Scriei secvena nlocuind punctele de suspensie
astfel nct, n urma executrii secvenei
obinute, valoarea variabilei ok s fie 1 dac
printre valorile citite s-a aflat i 2014, sau 0
altfel.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (2<n<50), cele
n elemente ale unui tablou unidimensional, numere ntregi cu cel mult patru cifre, apoi un
numr natural x (0<x<10). Cel puin un element al tabloului este par. Programul modific
tabloul n memorie scznd valoarea x din fiecare element par al tabloului, apoi afieaz
pe ecran elementele tabloului obinut, separate prin cte un spaiu.
Exemplu: pentru n=7, tabloul (2, 15, 70, 4, 0, 5, 3) i x=3,
se obine tabloul (-1, 15, 67, 1, -3, 5, 3).
(10p.)

4.

Fiierul bac.txt conine cel mult 1000000 de numere naturale din intervalul [0, 109],
separate prin cte un spaiu.
Se cere s se afieze pe ecran, separate prin cte un spaiu, cifrele care apar de cele mai
multe ori n scrierea numerelor din fiier. Pentru determinarea cifrelor cerute se utilizeaz
un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dac fiierul bac.txt conine numerele
399 1777578 721149 1212178
atunci pe ecran se afieaz valorile de mai jos, nu neaprat n aceast ordine:
7 1
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

Varianta 4

Filiera teoretic, profilul real, specializarea tiine ale naturii

Ministerul Educaiei Naionale

august 2014 MI

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking, se genereaz toate posibilitile de a forma succesiuni de


cte 5 genuri muzicale distincte din mulimea {jazz, rock, latino, house, pop}, astfel
nct n fiecare succesiune genul latino precede genul house. Dou succesiuni sunt
distincte dac genurile muzicale sunt n alt ordine.
Primele cinci soluii generate sunt, n aceast ordine, (jazz, rock, latino, house, pop),
(jazz, rock, latino, pop, house), (jazz, rock, pop, latino, house), (jazz,
latino, rock, house, pop), (jazz, latino, rock, pop, house). Imediat nainte de
(pop, latino, house, jazz, rock) este generat soluia:
(4p.)

a.

(rock, jazz, house, latino, pop)

b.

(rock, jazz, latino, house, pop)

c.

(pop, latino, rock, house, jazz)

d.

(pop, rock, latino, house, jazz)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul f, definit int f(int a,int b)


alturat. Scriei dou valori naturale distincte { if (b==0) return a;
else return f(b,a%b);
din intervalul [1,50] pe care le poate avea
}
variabila ntreag x, astfel nct f(30,x) s
aib valoarea 5.
(6p.)

3.

Se consider subprogramul triplete, cu un singur parametru, n, prin care primete o


valoare natural din intervalul [2,104]. Subprogramul afieaz pe ecran toate tripletele
de numere naturale (x, y, z) cu proprietatea c x<y<z i xy+yz=n. Fiecare triplet se
afieaz pe cte o linie a ecranului, iar numerele din fiecare triplet sunt separate prin cte
o virgul i ncadrate ntre paranteze rotunde, ca n exemplu.
Scriei definiia complet a subprogramului.
Exemplu: pentru n=8 se afieaz pe ecran, nu neaprat n aceast ordine, tripletele:
(0,1,8)
(0,2,4)
(1,2,3)
(10p.)

4.

Fiierul bac.txt conine pe prima linie un numr natural n (1n106), iar pe a doua linie
cel mult 1000000 de numere naturale de forma 10p (0p9), separate prin cte un spaiu.
Se cere s se afieze pe ecran numrul care ar aprea pe poziia n n irul ordonat
cresctor obinut din toate numerele aflate pe a doua linie a fiierului. Dac irul are mai
puin de n termeni, se afieaz pe ecran mesajul Nu exista.
Pentru determinarea numrului cerut se utilizeaz un algoritm eficient din punctul de
vedere al timpului de executare.
Exemplu: dac fiierul bac.txt conine numerele
5
100 100000 1 100000 1000 100 10
atunci pe ecran se afieaz valoarea
1000
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

Varianta 10

Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic


Filiera vocaional, profilul militar, specializarea matematic-informatic

Ministerul Educaiei Naionale

august 2014 SN

Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Pentru a verifica dac ntr-un tablou unidimensional exist elementul cu valoarea x=21, se
aplic metoda cutrii binare, iar succesiunea de elemente ale tabloului a cror valoare se
compar cu valoarea lui x pe parcursul aplicrii metodei indicate este: 49, 16, 21.
Elementele tabloului pot fi (n ordinea n care apar n tablou):
(4p.)

a.

(16,17,21,29,49,80,95)

b.

(4,16,21,49,56,70,85)

c.

(7,9,10,16,21,45,49)

d.

(16,20,21,49,50,56,59)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


ok=.........;
for(i=1;i<=10;i++)
{ cin>>x; | scanf(%d,&x);
.......
}

2.

n secvena alturat toate variabilele sunt de tip


ntreg, iar numerele citite sunt naturale.
Scriei secvena nlocuind punctele de suspensie
astfel nct, n urma executrii secvenei
obinute, valoarea variabilei ok s fie 1 dac
toate valorile citite au fost strict mai mici dect
2014, sau 0 altfel.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural, n (2n50), i


construiete n memorie un tablou unidimensional cu n elemente, astfel nct,
parcurgndu-l de la stnga la dreapta, se obine irul primelor n numere naturale, pare,
care NU sunt divizibile cu 5, ordonat strict cresctor, ca n exemplu. Programul afieaz
pe ecran elementele tabloului obinut, separate prin cte un spaiu.
Exemplu: dac n=7, se obine tabloul (2,4,6,8,12,14,16).
(10p.)

4.

Fiierul bac.txt conine pe prima linie un numr natural, n (1n106), iar pe a doua linie
cel mult 1000000 de numere naturale de forma 10p (0p9), separate prin cte un spaiu.
Se cere s se afieze pe ecran numrul care ar aprea pe poziia n n irul ordonat strict
cresctor obinut din toate numerele distincte aflate pe a doua linie a fiierului. Dac irul
are mai puin de n termeni distinci, se afieaz pe ecran mesajul Nu exista.
Pentru determinarea numrului cerut se utilizeaz un algoritm eficient din punctul de
vedere al timpului de executare.
Exemplu: dac fiierul bac.txt conine numerele
4
100 100000 1 100000 1000 100 10 100
atunci pe ecran se afieaz valoarea
1000
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

Varianta 10

Filiera teoretic, profilul real, specializarea tiine ale naturii

Ministerul Educaiei Naionale


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking, se genereaz toate posibilitile de a forma succesiuni de


cte 5 tipuri de creaii literare din mulimea {balad, basm, eseu, epopee, poem}, astfel
nct n fiecare succesiune eseul precede epopeea. Dou succesiuni sunt distincte dac
tipurile de creaii literare sunt n alt ordine.
Primele cinci soluii generate sunt, n aceast ordine, (balad, basm, eseu, epopee,
poem), (balad, basm, eseu, poem, epopee), (balad, basm, poem, eseu, epopee),
(balad, eseu, basm, epopee, poem), (balad, eseu, basm, poem, epopee). Imediat
nainte de (poem, eseu, epopee, balad, basm) este generat soluia:
(4p.)

a.

(basm, balad, epopee, eseu, poem)

b.

(basm, balad, eseu, epopee, poem)

c.

(poem, eseu, basm, epopee, balad)

d.

(poem, basm, eseu, epopee, balad)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider subprogramul f, definit int f(int a, int b)


alturat. Scriei valorile f(10,5) i { if (a<b) return a;
if (a%b==0) return b;
f(20,9).
(6p.)
return f(a-1,b+2);
}

3.

Un numr natural nenul se numete subperfect dac este strict mai mic dect suma
divizorilor si proprii (divizori naturali diferii de 1 i de el nsui).
Exemplu: 12 este numr subperfect pentru c 12<2+3+4+6.
Se consider subprogramul subperfect, cu doi parametri, a i b, prin care primete cte
un numr natural (2a<b109). Subprogramul afieaz pe ecran, separate prin cte un
spaiu, n ordine descresctoare, toate numerele subperfecte din intervalul [a,b]. Dac n
interval nu exist astfel de numere, subprogramul afieaz pe ecran mesajul nu exista.
Scriei definiia complet a subprogramului.
Exemplu: pentru a=10 i b=20, se afieaz pe ecran: 20 18 12
(10p.)

4.

Fiierul bac.txt conine pe prima linie un numr natural, n (1n106), iar pe a doua linie
cel mult 1000000 de numere naturale de forma 2p (0p9), separate prin cte un spaiu.
Se cere s se afieze pe ecran numrul care ar aprea pe poziia n n irul ordonat
descresctor obinut din toate numerele aflate pe a doua linie a fiierului. Dac irul are
mai puin de n termeni, se afieaz pe ecran mesajul Nu exista.
Pentru determinarea numrului cerut se utilizeaz un algoritm eficient din punctul de
vedere al timpului de executare.
Exemplu: dac fiierul bac.txt conine numerele
5
16 32 1 64 128 32 128 32
atunci pe ecran se afieaz valoarea
32
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

MODEL

Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic


Filiera vocaional, profilul militar, specializarea matematic-informatic

Ministerul Educaiei Naionale


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.
Se consider dou tablouri unidimensionale A i B. tiind c A=(2,10,16,20,21), iar n
urma interclasrii tablourilor A i B n ordine cresctoare se obine tabloul cu elementele
(1,2,8,10,16,16,17,20,21,49), atunci tabloul B poate fi:
(4p.)
a.

(49,17,8,1)

b. (49,17,16,8,1)

c. (49,20,16,8,1)

d. (49,21,16,17,1)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


ok=.........;
for(i=1;i<=10;i++)
{ cin>>x; | scanf(%d,&x);
.......
}

2.

n secvena alturat toate variabilele sunt de tip


ntreg, iar numerele citite sunt naturale.
Scriei secvena
nlocuind punctele de
suspensie, astfel nct, n urma executrii
secvenei obinute, valoarea variabilei ok s fie 1
dac toate valorile citite au fost strict mai mari
dect 2015, sau 0 altfel.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural n (2<n<50) i


construiete n memorie un tablou unidimensional, astfel nct parcurgndu-l de la stnga
la dreapta s se obin irul primelor n numere naturale, impare, care NU sunt divizibile cu
3, ordonat strict descresctor. Programul afieaz pe ecran elementele tabloului obinut,
separate prin cte un spaiu.
Exemplu: pentru n=7, se obine tabloul (19, 17, 13, 11, 7, 5, 1).
(10p.)

4.

Fiierul bac.txt conine pe prima linie un numr natural, n (1n106), iar pe a doua linie
cel mult 1000000 de numere naturale de forma 2p (0p9), separate prin cte un spaiu.
Se cere s se afieze pe ecran numrul care ar aprea pe poziia n n irul ordonat strict
descresctor obinut din toate numerele distincte aflate pe a doua linie a fiierului. Dac
irul are mai puin de n termeni distinci, se afieaz pe ecran mesajul Nu exista.
Pentru determinarea numrului cerut se utilizeaz un algoritm eficient din punctul de
vedere al timpului de executare.
Exemplu: dac fiierul bac.txt conine numerele
3
16 32 1 64 128 32 128 32 32
atunci pe ecran se afieaz valoarea
32
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++

MODEL

Filiera teoretic, profilul real, specializarea tiine ale naturii

Ministerul Educaiei i Cercetrii tiinifice


Centrul Naional de Evaluare i Examinare

bac special 2015

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking, se genereaz toate iragurile formate din cte 5 pietre
distincte din mulimea {opal, rubin, safir, smarald, topaz}. Dou iraguri sunt
distincte dac pietrele sunt dispuse n alt ordine. Primele patru soluii obinute sunt, n
aceast ordine: (opal, rubin, safir, smarald, topaz), (opal, rubin, safir, topaz,
smarald), (opal, rubin, smarald, safir, topaz) i (opal, rubin, smarald, topaz,
safir). Indicai soluia care trebuie eliminat din enumerarea urmtoare, astfel nct cele
rmase s apar n ordinea generrii lor, pe poziii consecutive: (smarald, safir, opal,
topaz, rubin) (smarald, safir, topaz, opal, rubin) (smarald, safir, topaz,
rubin, opal) (smarald, topaz, opal, rubin, safir).
(4p.)

a.

(smarald, safir, opal, topaz, rubin)

b.

(smarald, safir, topaz, opal, rubin)

c.

(smarald, safir, topaz, rubin, opal)

d.

(smarald, topaz, opal, rubin, safir)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Subprogramul F este definit alturat. void F (long a, int b)


Scriei ce se afieaz n urma apelului { if(a*b!=0)
if(a%2==0)
de mai jos.
{ cout<<a%10; | printf(%d,a%10);
F(154678,3);
F(a/10,b-1);
(6p.)
}
else
{ F(a/10,b+1);
cout<<a%10; | printf(%d,a%10);
}
}

3.

Subprogramul DivImpar are doi parametri, a i b, prin care primete dou numere
naturale din intervalul [1,105]. Subprogramul returneaz cel mai mare divizor comun
impar al numerelor a i b.
Scriei definiia complet a subprogramului.
Exemplu: dac a=30 i b=60, subprogramul returneaz valoarea 15.
(10p.)

4.

Fiierul date.in conine un ir de cel mult un milion de numere naturale din intervalul
[0,109], separate prin cte un spaiu. irul are cel puin doi termeni pari i cel puin doi
termeni impari.
Se cere s se afieze pe ecran mesajul DA dac irul aflat n fiier are un subir ordonat
cresctor, format din toi termenii pari ai si, i un subir ordonat descresctor, format din
toi termenii impari ai si. Dac nu exist dou astfel de subiruri, programul afieaz pe
ecran mesajul NU. Pentru verificarea proprietii cerute utilizai un algoritm eficient din
punctul de vedere al timpului de executare i al memoriei necesare.
Exemplu: dac fiierul date.in conine numerele
7 2 5 2 4 3 8
se afieaz pe ecran mesajul
DA
iar dac fiierul conine numerele
5 2 7 2 4 3 8
se afieaz pe ecran mesajul
NU
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Varianta 5
Limbajul C/C++
Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic
Filiera vocaional, profilul militar, specializarea matematic-informatic
Pagina 3 din 3

Ministerul Educaiei i Cercetrii tiinifice


Centrul Naional de Evaluare i Examinare

iuie 2015 MI

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Utiliznd metoda backtracking, se genereaz toate numerele naturale din intervalul


[100,999] care au suma cifrelor egal cu 5. Primele cinci soluii obinute sunt, n aceast
ordine 104, 113, 122, 131, 140. Utiliznd acelai algoritm, se genereaz toate numerele
naturale din intervalul [1000,9999] care au suma cifrelor egal cu 6. Al treilea numr
generat este:
(4p.)
1005

b.

1023

c.

1031

d.

1041

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Subprogramul F este definit alturat.


Scriei ce se afieaz n urma apelului de
mai jos.
F(d);

(6p.)

void F(char c)
{ if(c>=a)
{ cout<<c; | printf("%c",c);
F(c-1);
}
}

3.

irul lui Fibonacci (1, 1, 2, 3, 5, 8, 13, 21,) se definete astfel:


f1=1, f2=1 i fi=fi-1+fi-2 pentru orice numr natural i, i3.
Subprogramul Fibo are un singur parametru, n, prin care primete un numr natural
(n
[1,30]). Subprogramul returneaz al n-lea termen impar al irului lui Fibonacci.
Scriei definiia complet a subprogramului.
Exemplu: dac n=6, subprogramul returneaz numrul 21.
(10p.)

4.

Fiierul bac.txt conine un ir de cel mult un milion de numere naturale din intervalul
[0,102], separate prin cte un spaiu.
Se cere s se determine toate perechile distincte formate din termeni ai irului aflat n
fiier, x i y (y-x2), astfel nct s nu existe niciun termen al irului care s aparin
intervalului (x,y). Numerele din fiecare pereche sunt afiate pe cte o linie a ecranului, n
ordine strict cresctoare, separate printr-un spaiu, iar dac nu exist nicio astfel de
pereche, se afieaz pe ecran mesajul nu exista. Pentru determinarea numerelor
cerute utilizai un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dac fiierul conine numerele
5 9 0 8 10 11 12 13 15 14 6 7 40 10 0 0 5 41 95 7
atunci pe ecran se afieaz, nu neaprat n aceast ordine, perechile
0 5
15 40
41 95
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Varianta 9
Limbajul C/C++
Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic
Filiera vocaional, profilul militar, specializarea matematic-informatic
Pagina 3 din 3

iulie 2015 SN

Ministerul Educaiei i Cercetrii tiinifice


Centrul Naional de Evaluare i Examinare

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Variabilele i i j sunt de tip ntreg. Indicai expresia care poate nlocui punctele de
suspensie astfel nct, n urma executrii secvenei obinute, s se afieze numerele de
mai jos.
for(i=1;i<=5;i++)
5 4 3 2 1
{ for(j=1;j<=5;j++)
4 4 3 2 1
if(......) cout<<6-j<< ; | printf(%d ,6-j);
3 3 3 2 1
else cout<<6-i<< ; | printf(%d ,6-i);
2 2 2 2 1
cout<<endl; | printf(\n);
1 1 1 1 1
}
(4p.)
i<j

b.

i>j

c.

i+j<5

d.

i+j>5

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Se consider tablourile unidimensionale A=(1,2,7,10,16) i B=(15,10,9,8,3).


Scriei elementele tabloului C, n ordinea n care ele apar n tablou, astfel nct acesta s
fie obinut prin interclasarea descresctoare a elementelor din A i B.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural, n (n


[2,20]), apoi
cele n elemente ale unui tablou unidimensional, numere naturale din intervalul [0,109].
Programul determin transformarea n memorie a tabloului, permutnd circular elementele
acestuia, de la stnga spre dreapta, cu o poziie, ca n exemplu. Elementele tabloului
astfel obinut se afieaz pe ecran, separate prin cte un spaiu.
Exemplu: pentru n=4 i tabloul (1,1,3,2) se obine tabloul (2,1,1,3).
(10p.)

4.

Fiierul bac.txt conine un ir de cel mult un milion de numere naturale din intervalul
[0,102], separate prin cte un spaiu.
Se cere s se afieze pe ecran mesajul DA, dac exist cel puin o pereche format din
termeni ai irului aflat n fiier, x i y (y-x2), astfel nct s nu existe niciun termen al
irului care s aparin intervalului (x,y). Dac nu exist nicio astfel de pereche, se
afieaz pe ecran mesajul NU. Pentru verificarea proprietii cerute, utilizai un algoritm
eficient din punctul de vedere al timpului de executare.
Exemplu: dac fiierul conine numerele
5 9 0 8 10 11 12 13 15 14 6 7 40 10 0 0 5 41 95 7
atunci pe ecran se afieaz mesajul
DA
deoarece intervalele (0,5), (15,40) sau (41,95) au proprietatea cerut.
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++
Filiera teoretic, profilul real, tiine ale naturii

Varianta 9

Pagina 3 din 3

Ministerul Educaiei i Cercetrii tiinifice


Centrul Naional de Evaluare i Examinare

august 2015 MI

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

Utiliznd metoda backtracking, se genereaz toate parfumurile formate prin amestecarea a


cte 3 esene distincte din mulimea {ambr, cedru, iris, mosc, santal}. Primele patru
soluii obinute sunt, n aceast ordine: (ambr, cedru, iris), (ambr, cedru, mosc),
(ambr, cedru, santal) i (ambr, iris, mosc). Indicai submulimea care trebuie
eliminat din enumerarea urmtoare, astfel nct soluiile rmase s apar n ordinea
generrii lor: (ambr, mosc, santal), (cedru, mosc, santal), (cedru, iris, mosc),
(cedru, iris, santal).
(4p.)

a.

(ambr, mosc, santal)

b.

(cedru, mosc, santal)

c.

(cedru, iris, mosc)

d.

(cedru, iris, santal)

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


void F (int n, int d)
{ if(d<n/2) F(n, d+1);
if(n%d==0)
cout<<d<< ; | printf(%d ,d);
}

2.

Subprogramul F este definit


alturat. Scriei instruciunea prin
care se poate apela subprogramul
pentru a afia, n ordine strict
descresctoare, toi divizorii pozitivi
proprii ai numrului 2015 (divizori
naturali diferii de 1 i de 2015).
(6p.)

3.

Subprogramul NrPrime are un singur parametru, n, prin care primete un numr natural
(n
[0,109]). Subprogramul returneaz numrul de cifre prime ale lui n.
Scriei definiia complet a subprogramului.
Exemplu: dac n=1233405, atunci subprogramul returneaz valoarea 4.
(10p.)

4.

Fiierul BAC.TXT conine pe prima linie un numr natural, n (n


[2,5000]), i pe a doua
linie un ir de 2n numere naturale din intervalul [0,5]. Numerele aflate pe aceeai linie
a fiierului sunt separate prin cte un spaiu.
Se cere s se afieze pe ecran valoarea obinut nsumnd toate produsele de forma
xy, unde x i y sunt numere de paritate diferit, x fiind printre primii n termeni ai irului
aflat n fiier, iar y printre ultimii n termeni ai acestui ir. Dac nu exist niciun astfel de
produs, valoarea cerut este nul. Pentru determinarea numrului cerut utilizai un
algoritm eficient din punctul de vedere al timpului de executare i al memoriei necesare.
Exemplu: dac fiierul are coninutul de mai jos
5
1 2 0 0 5 4 2 3 1 0
pe ecran se afieaz numrul 44
(14+12+10+23+21+03+01+03+01+54+52+50=44).
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Varianta 2
Limbajul C/C++
Filiera teoretic, profilul real, specializrile: matematic-informatic, matematic-informatic intensiv informatic
Filiera vocaional, profilul militar, specializarea matematic-informatic
Pagina 3 din 3

Ministerul Educaiei i Cercetrii tiinifice


Centrul Naional de Evaluare i Examinare

august 2015 SN

SUBIECTUL al III-lea
(30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1.

a.

Variabilele i i j sunt de tip ntreg. Indicai expresia care poate nlocui punctele de
suspensie astfel nct, n urma executrii secvenei obinute, s se afieze numerele de
mai jos.
for(i=1;i<=5;i++)
1 2 3 4 5
{ for(j=1;j<=5;j++)
6 7 8 9 10
cout<<......<< ; | printf(%d ,......);
11 12 13 14 15
cout<<endl; | printf(\n);
16 17 18 19 20
}
(4p.) 21 22 23 24 25
(i-1)*5+j

b.

i+(j-1)*5

c.

i+(j+1)*5

d.

(i+1)*5+j

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2.

Pentru a verifica dac n tabloul unidimensional (1,3,5,7,12,21,49) exist elementul


cu valoarea x=5, se aplic metoda cutrii binare. Scriei succesiunea de elemente ale
tabloului ale cror valori se compar cu valoarea lui x pe parcursul aplicrii metodei
indicate.
(6p.)

3.

Scriei un program C/C++ care citete de la tastatur un numr natural, n (n


[2,20]), apoi
cele n elemente ale unui tablou unidimensional, numere naturale din intervalul [0,109].
Programul afieaz pe ecran mesajul DA n cazul n care tabloul conine doar numere pare
i, eventual numrul 2015, sau mesajul NU n caz contrar.
Exemplu: pentru n=5 i tabloul (32,2015,8,16,2015) sau tabloul (32,20,8,16,20)
se afieaz mesajul
DA
iar
pentru
n=6
i
tabloul
(32,17,2015,8,16,2015)
sau
tabloul
(2015,2015,2015,2015,2015,2015) se afieaz mesajul
NU
(10p.)

4.

Fiierul BAC.TXT conine pe prima linie un numr natural, n (n


[2,5000]), i, ncepnd
cu a doua linie, un ir de 2n numere naturale din intervalul [0,5]. Numerele aflate pe
aceeai linie a fiierului sunt separate prin cte un spaiu.
Se cere s se afieze pe ecran valoarea obinut nsumnd toate produsele de forma
xy, unde x este un numr impar aflat printre primii n termeni ai irului aflat n fiier, iar y
este un numr par aflat printre ultimii n termeni ai acestui ir. Dac nu exist niciun astfel
de produs, valoarea cerut este nul. Pentru determinarea numrului cerut utilizai un
algoritm eficient din punctul de vedere al timpului de executare i al memoriei necesare.
Exemplu: dac fiierul are coninutul de mai jos
4
1 2 5 1 4 2 3 0
pe ecran se afieaz numrul 42 (14+12+10+54+52+50+14+12+10=42).
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia.
(4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris.
(6p.)

Prob scris la informatic


Limbajul C/C++
Filiera teoretic, profilul real, tiine ale naturii

Varianta 2

Pagina 3 din 3

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