Sunteți pe pagina 1din 3

Subiecte propuse de Balcă Mariana-Mihaela

SIMULAREA EXAMENULUI DE BACALAUREAT


Proba E.d)
Proba scrisă la INFORMATICĂ
PROBA E, limbajul C++
Filieră teoretică, profil real, specializare matematică-informatică / matematică-informatică intensiv
informatică
Filieră vocațională, profil militar, specializare matematică-informatică
· Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.
· Timpul de lucru efectiv este de 3 ore.
· Identificatorii utilizați în rezolvări 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ă). Datele de intrare se consideră corecte, validarea lor nefiind necesară.
· În grafurile din cerințe oricare arc/muchie are extremități distincte și oricare două arce/muchii
diferă prin cel puțin una dintre extremități.
SUBIECTUL I (20 de puncte)
Pentru fiecare dintre itemii de la 1 la 5, scrieți pe foaia de examen litera corespunzătoare
răspunsului corect. Fiecare răspuns corect se notează cu 4 puncte.
1. Indicați câte valori întregi, cu cifre distincte, i se pot atribui variabilei întregi x astfel încât
expresia C/C++ de mai jos să aibă valoarea 0.
x/1011/2
a. 2021 b. 2022
c. 4043 d. alta varianta
2. Pentru a determina toate modalităţile de a-l descompune pe 9 ca sumă de minim două
numere naturale nenule distincte (abstracţie făcând de ordinea termenilor), se foloseşte
metoda backtracking generând, în această ordine, soluţiile: 8+1, 7+2, 6+3,
6+2+1, 5+4, 5+3+1, 4+3+2. Aplicând exact aceeaşi metodă, se determină toate
soluţiile pentru descompunerea lui 18. Precizați care este antepenultima soluție
generată.
a. 7+5+4+2 b.7+5+3+2+1 c.10+5+3 d.10+5+2+1

3. Variabila x este declarată alăturat. Precizați care struct unu


{ int x;
dintre următoarele atribuiri este corectă din
char a; };
punct de vedere sintactic. (6p.) struct doi
{ unu y[5];
char z[4];
bool t;} x[5];
a.x[1]=x[2]; b.x[0].z=’a’; c. x=a; d. y.x=x;

4. Un graf neorientat are 15 componente conexe. Știind că graful are toate nodurile cu
grad par nenul, indicați care este numărul minim de noduri din graf.
a. 60 b. 45 c. 30 d. 15

5. Un arbore cu 2048 de noduri, numerotate de la 1 la 2048, are vectorul de tați completat


astfel: tata[x]=[x/2] (partea întreagă a împărțirii lui x la 2), pentru orice x nod din arbore.
Indicați care este lungimea maximă a unui lanț elementar dintr-un astfel de arbore.
a.10 b.11 c.20 d.21
SUBIECTUL al II-lea (40 de puncte)

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.


1. Algoritmul alăturat este reprezentat în pseudocod.
S-a notat cu a%b restul împărțirii numărului natural a citeşte x,y
la numărul natural nenul b și cu [c] partea întreagă a (numere naturale)
numărului real c. s0
┌daca x>y atunci

|x y
a. Scrieţi valoarea afişată dacă se citesc └■
numerele 10 și 2. (6p.) ┌pentru ky,x,-1 execută
| t k
|┌repetă
b. │| t [t/10]
Scrieţi cel mai mic număr natural │└până când t<10
|┌daca t%9=0 atunci
care poate să fie citit pentru y astfel │|s s+k
│└■
încât, în urma executării algoritmului dat, └■
dacă x=90, să se afișeze valoarea 90. scrie s

(6p.)
c. Scrieţi programul C/C++ corespunzător
algoritmului dat. (10p.)

d.
Scrieţi în pseudocod un algoritm,
echivalent cu cel dat, înlocuind
adecvat structura
pentru...execută cu o structură
repetitivă cu test inițial. (6p.)

2. Subprogramul f este definit alăturat. int f(int x)


{ int a;
Indicați care este valoarea returnată în urma
if(x==0) return 9;
apelului f(73989). (6p.) a=f(x/10);
if(a>x%10) return x%10;
else return a;
}
3. Precizați ce se afișează pe ecran după executarea secvenţei de instrucţiuni in C++ de
mai jos.
char a[20]="",b[20]="catacomba";
strcpy(a,strchr(b,'a')+3);
strcpy(b,b+2); cout<<b[1]+3;
strncat(a,b,1);
cout <<a;
(6p.)
Subiectul III (30 de puncte)
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
1. Subprogramul Numere primeşte prin parametrul n un număr natural din [0,103], iar
prin paramentrul s un număr natural din [0,102]. Subprogramul afișează, în ordine
descrescătoare, separate printr-un spațiu, toate numerele naturale mai mici sau egale
decât n2 și mai mari sau egale decât n, care au suma cifrelor egale cu s. Dacă nu există
niciun astfel de număr, subprogramul afișează mesajul nu exista. Exemplu: dacă
n=5 și s=7 subprogramul afișează 25 16 7 , iar dacă n=5 și s=15 subprogramul
afișează nu exista (10p.)
2. Scrieţi un program C/C++ care citeşte de la tastatură numere naturale din intervalul
[1,100], în această ordine: n, apoi elementele unui tablou bidimensional cu n linii şi
n coloane, iar la final un număr x. Programul afişează pe ecran mesajul DA, dacă în
tablou există cel puțin un element egal cu x care este adiacent cu cel puțin un număr
pătrat perfect sau mesajul NU în caz contrar. Prin element adiacent se înțelege un
element din matrice care este situat în jurul lui x. Exemple: pentru n=4, tabloul de mai
jos şi x=8, se afişează pe ecran mesajul DA deoarece 8 are adiacente elementele
4,3,7,9 și 9, iar 3 dintre acestea sunt pătrate perfecte. (10p.)

2 3 4 5
3 2 3 4
5 7 7 8
9 1 9 9
Iar pentru n=4, tabloul de mai jos şi x=1, se afişează pe ecran mesajul NU deoarece 1
are adiacente elementele 2,3 și 2, respectiv 2,3,3,7,9,5,2,3, iar niciunul nu este
pătrat perfect.
1 2 4 5
2 3 3 4
3 1 7 8
2 5 9 9

3. Fişierul date.in conţine un şir cu cel puțin două și cel mult 106 numere naturale cu maxim
8 cifre fiecare. Se cere să se afișeze pe ecran, cu un spațiu între ele, în ordine crescătoare, toate
cifrele de control diferite de 9 ale numerelor din șir. Cifra de control a unui număr se
calculează făcând suma cifrelor numărului, după care suma cifrelor sumei și așa mai departe
până când suma obținută este o cifră. Dacă nu există niciun număr în șir cu astfel de
proprietate, pe ecran se va afișa mesajul nu exista. Pentru rezolvarea cerinței se utilizează
un algoritm eficient din punctul al timpului de executare.
Exemple: dacă fişierul conţine numerele
123 1234 999 12 100 19
Cifrele de control ale numerelor din șir sunt 6 1 9 3 1 1
Iar pe ecran se afişează valorile 1 1 1 3 6
Iar dacă fişierul conţine numerele
54 180 99 1233 9
Cifrele de control ale numerelor din șir sunt 9 9 9 9 9
Iar pe ecran se afişează nu exista

a) Descrieţi în limbaj natural algoritmul utilizat, justificând eficienţa acestuia. (2p.)


b) Scrieţi programul C/C++ corespunzător algoritmului descris. (8p.)

S-ar putea să vă placă și