Ministerul Educaţiei, Cercetării şi Inovării
Centrul Naţional pentru Curriculum şi Evaluare în Învăţământul Preuniversitar
EXAMENUL DE BACALAUREAT – 2009
Proba scrisă la INFORMATICĂ
PROBA E, limbajul C/C++
Specializarea Matematică-informatică intensiv informatică
♦ Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.
♦ Timpul efectiv de lucru este de 3 ore.
♦ În rezolvările cerute, identificatorii utilizaţi trebuie să respecte precizările din enunţ
(bold), iar în lipsa unor precizări explicite, notaţiile trebuie să corespundă cu semnificaţiile
asociate acestora (eventual în formă prescurtată).
Subiectul I (30 de puncte) - Varianta 080
Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.
1. Variabilele n, z şi u sunt întregi, iar n memorează un număr natural cu cel puţin 2 cifre.
Secvenţa C/C++ care determină interschimbarea ultimelor două cifre din scrierea numărului
memorat de n este: (4p.)
a. n=(n/100*10+n%10)*10+n%100/10; b. u=n%10;
z=n/100%10;
n=n/100+u*10+z;
c. n=(n/100*10+n%10)*10+n/100%10; d. u=n%10;
z=n/100%10;
n=n/100*100+z*10+u;
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
2. Se consideră algoritmul alăturat, reprezentat în citeşte a
pseudocod. (număr natural)
bÅ0
S-a notat cu x%y restul împărţirii numărului natural x la numărul pÅ1
natural nenul y şi cu [z] partea întreagă a numărului real z. ┌cât timp a>0 execută
│ cÅa%10
a) Scrieţi valoarea care se va afişa dacă se citeşte numărul │ ┌dacă c%2≠0 atunci
a=245903. (6p.) │ │ bÅb+p*c
b) Scrieţi o valoare care poate fi citită pentru variabila a │ │ pÅp*10
astfel încât să se afişeze o valoare egală cu cea citită. │ └■
│ aÅ[a/10]
(4p.)
└■
c) Scrieţi programul C/C++ corespunzător algoritmului dat. scrie b
(10p.)
d) Scrieţi în pseudocod un algoritm echivalent cu cel dat în
care să se înlocuiască structura cât timp…execută cu
o structură repetitivă de alt tip. (6p.)
BACALAUREAT 2009 - INFORMATICĂ, limbajul C/C++ Subiectul I
Specializarea Matematică-informatică intensiv informatică
Ministerul Educaţiei, Cercetării şi Inovării
Centrul Naţional pentru Curriculum şi Evaluare în Învăţământul Preuniversitar
Subiectul II (30 de puncte) - Varianta 080
Pentru fiecare dintre itemii 1 şi 2 scrieţi pe foaia de examen litera care corespunde
răspunsului corect.
1. În secvenţa de program alăturată, variabila a for(i = 1; i<=8; i++)
memorează o matrice cu 8 linii şi 8 coloane { k=i;
(numerotate de la 1 la 8), cu elemente numere for(j = 1; j<=8; j++)
întregi, iar toate celelalte variabile sunt întregi. { a[i][j]=k; k=k+1; }
Ce valoare va avea elementul a[8][8] după }
executarea secvenţei? (4p.)
a. 16 b. 15 c. 64 d. 10
2. Se consideră o listă simplu înlănţuită, alocată p=prim;
dinamic, în care fiecare nod memorează în s=0;
câmpul nr o valoare întreagă şi în câmpul urm while(p->urm!=NULL)
adresa nodului următor sau NULL dacă este {
ultimul nod din listă. În listă sunt memorate, în if(p->nr%2==0)
această ordine, valorile 8, 5, 4, 6, 3, 7, 2. s=s+p->nr;
Variabila prim reţine adresa primului element p=p->urm->urm;
}
din listă, variabila p este de acelaşi tip cu
printf(”%d”,s); | cout<<s;
variabila prim, iar variabila s este de tip întreg.
Ce valoare se va afişa în urma executării
secvenţei de program alăturate? (4p.)
a. 18 b. 20 c. 12 d. 14
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
3. Un graf orientat are 8 arce şi fiecare nod al grafului are gradul exterior un număr nenul. Doar
două dintre noduri au gradul exterior un număr impar, restul având gradele exterioare
numere pare. Care este numărul maxim de noduri pe care le poate avea graful? (6p.)
4. Se consideră graful neorientat cu 6 noduri, numerotate cu 1, 2, 3, 4, 5, 6, 1: 2,5,6
şi 9 muchii dat prin listele de adiacenţă alăturate. 2: 1,3,4
3: 2,4,6
a) Care este cel mai scurt lanţ cu o extremitate în nodul 1 şi cealaltă 4: 2,3,5
extremitate în nodul 3? (3p.) 5: 1,4,6
b) Care este numărul maxim de muchii ce pot fi eliminate astfel încât 6: 1,3,5
graful parţial obţinut să rămână conex? (3p.)
5. Scrieţi programul C/C++ care citeşte de la tastatură un cuvânt cu cel puţin una şi cel mult 20
de litere ale alfabetului englez, construieşte şi afişează pe ecran cuvântul obţinut prin
interschimbarea primei consoane cu ultima vocală din cuvânt. În cazul în care cuvântul este
format numai din vocale sau numai din consoane, programul afişează pe ecran mesajul
IMPOSIBIL. Se consideră vocale literele a, e, i, o, u, A, E, I, O, U.
Exemplu: dacă se citeşte cuvântul Marmorat se va obţine şi afişa cuvântul aarmorMt
(10p.)
BACALAUREAT 2009 - INFORMATICĂ, limbajul C/C++ Subiectul II
Specializarea Matematică-informatică intensiv informatică
Ministerul Educaţiei, Cercetării şi Inovării
Centrul Naţional pentru Curriculum şi Evaluare în Învăţământul Preuniversitar
Subiectul III (30 de puncte) - Varianta 080
Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.
1. O clasă de 28 de elevi este la ora de educaţie fizică şi profesorul doreşte să formeze o
echipă de 4 elevi. Ordinea elevilor în cadrul echipei nu are importanţă. Algoritmul de
generare a tuturor posibilităţilor de a forma o asfel de echipă este similar cu algoritmul de
generare a tuturor: (4p.)
a. aranjamentelor de 28 de elemente luate b. combinărilor de 28 de elemente luate
câte 4 câte 4
c. partiţiilor unei mulţimi cu28 de elemente d. elementelor produsului cartezian
AxAxAxA, A fiind o mulţime cu 28 de
elemente
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
2. Pentru definiţia alăturată a subprogramului sub, int sub(long n)
ce valoare are sub(9)? Dar sub(132764)? {if (n!=0)
if(n%2!=0)
(6p.)
return n%10+sub(n/10);
else return sub(n/10);
else return 0;
}
3. Fişierul text [Link] conţine cel mult 1000 de numere naturale cu cel mult patru cifre
fiecare, despărţite prin câte un spaţiu. Scrieţi programul C/C++ care citeşte numerele din
fişier şi afişează pe ecran, în ordine crescătoare, acele numere din fişier care au toate cifrele
egale. Dacă fişierul nu conţine niciun astfel de număr, se va afişa pe ecran mesajul NU
EXISTA.
Exemplu: dacă fişierul [Link] conţine numerele: 30 44 111 7 25 5 atunci pe ecran
se va afişa 5 7 44 111. (10p.)
4. a) Scrieţi definiţia completă a unui subprogram divi cu doi parametri, care primeşte prin
intermediul parametrului n un număr 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) Scrieţi programul C/C++ care citeşte de la tastatură un număr natural nenul n
(1<n<1000000) şi afişează pe ecran cel mai mare numar natural mai mic decât n care îl
divide pe n. Se vor folosi apeluri utile ale subprogramului divi.
Exemple: dacă n=120, se afişează pe ecran 60, iar dacă n=43, se afişează 1. (6p.)
BACALAUREAT 2009 - INFORMATICĂ, limbajul C/C++ Subiectul III
Specializarea Matematică-informatică intensiv informatică