Documente Academic
Documente Profesional
Documente Cultură
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 o expresie C/C++ care are valoarea 1 dacă și numai dacă valoarea variabilei întregi m este un
multiplu comun al variabilelor întregi strict pozitive a și b.
a. a%m==0 && b%m==0 && a*b b. !(m%a) && !(m%b) && a*b
c. !(a%m+b%m) && a*b d. m%a==0 || m%b==0 && a*b
a. 11 b. 15 c.25 d.14
5. Un graf neorientat are 6 noduri, numerotate de la 1 la 6, și muchiile [1,3], [2,3], [2,5], [3,5], [4,6]. Numărul
minim de muchii ce trebuie adăugate pentru ca graful să devină conex este:
a. 1; b. 2; c. 3; d; 0.
2. Utilizând metoda bactracking se generează toate șirurile ordonate alfabetic care conțin cel puțin trei
litere distincte, din mulțimea {F, O, R, M, A}, astfel încât în orice șir generat nu există doua vocale
alăturate. Primele patru soluții generate sunt, în această ordine: AFM, AFMO, AFMOR, AFMR. Scrieți
următoarele trei soluții generate imediat după soluția AMOR .
(6p.)
3. In secvența de mai jos, A este o matrice cu elemente întregi, cu 10 linii si 10 coloane în care liniile și
coloanele sunt indexate de la 0. Completați secvența dată astfel încat în urma executării ei, să se
afișeze numărul de elemente strict negative de pe linia X, elemente aflate pe coloane cu numere de
ordine divizibile cu 3.
(6p.)
k…….
for (i=0; i<=………………; i++)
if (………………………) k++;
cout<<k; | printf("%d ", k);
2. Scrieți un program C/C++ care citește de la tastatură un text cu cel mult 255 caractere format din cuvinte
(litere mici și litere mari) și numere reale separate printr-unul sau mai multe spații. Câte numere conține
textul și câte cifre s-au citit. Numerele obținute se vor afișa cu spațiu între ele.
Exemplu: Dacă textul citit este ”Valoarea absoluta a lui -12 este 12 iar valoarea lui PI este 3,14”
Răspunsul afișat este 3 7 (10p.)
3. Fisierul numere.in memorează numere naturale astfel:
- pe prima linie o valoarea naturală n (n<=100)
- pe a doua linie n valori naturale, de cel mult 9 cifre, ordonate crescător, separate prin spațiu
- pe a treia linie o valoare naturală m (m<=1000000)
- pe a patra linie m valori naturale, de cel mult 9 cifre, ordonate crescător, separate prin spațiu
Se cere să se afișeze crescător toate valorile distincte, din cele două șiruri, divizibile cu 3. Dacă nu există
valori divizibile cu 3 se va afișa mesajul nu exista. Pentru determinarea valorilor cerute se utilizează un
algoritm eficient din punctul de vedere al memoriei utilizate și al timpului de executare.
Exemplu: dacă fisierul numere.in conține:
10 Pe ecran se va afișa:
8 13 19 24 36 52 63 84 108 135 6 15 24 36 63 84 108 135
10
6 15 20 24 50 56 63 68 70 71
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.)
Simulare județeană - Probă scrisă la INFORMATICĂ Varianta 1
Filieră teoretică, profil real, specializare matematică-informatică / matematică-informatică intensiv informatică
Filieră vocațională, profil militar, specializare matematică-informatică
Inspectoratul Școlar Județean Constanța
Simulare județeană - Examenul de bacalaureat național, ianuarie 2022
Proba E. d)
Informatică
Limbajul C/C++
Varianta 2
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.
Varianta 3
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.
a. 2 b. 7 c. 12 d. 15
2. Fiind dat un tablou bidimensional cu 10 linii şi 10 coloane, câte elemente se găsesc strict
sub diagonala secundară a tabloului?
a. 90 b. 45 c. 50 d. 40
3. Fie un graf neorientat complet cu 30 de noduri. Indicați numărul de muchii ce pot fi eliminate, astfel
încât graful parțial obținut să fie conex și fără cicluri.
a. 30 b. 407 c. 435 d. 406
4. Indicați un posibil vector de tați pentru un arbore cu 6 noduri.
a. (6, 3, 0, 3, 6, 3) b. (5, 0, 3, 2, 2, 3) c. (2, 0, 2, 3, 3, 0) d. (2, 1, 0, 3, 6, 3)
5. Se consideră următorul subprogram recursiv:
void p (int i, int n)
{ int j;
if (i<=n)
{ p(i+1, n);
for (j=2; j<=i; j++)
cout<<j; | printf (“%d”, j);
cout<<endl; | printf (“\n”);
}
}
Ce se va fișa în urma apelului p(2, 4)?
a. 234 b. 234 c. 432 d. 222
34 23 43 33
4 2 4 4
2. Scrieţi un subprogram sumak care să calculeze suma primelor k (k<n) elemente numere prime ale unui
vector, valoarea k, numărul n (n<=50) de elemente din vector şi vectorul fiind specificate ca parametri. Dacă
în vector nu există k elemente numere prime, atunci subprogramul va returna valoarea -1. Consideraţi că
elementele vectorului sunt indexate de la 1.
Exemplu: Pentru vectorul (1, 2, 4, 7, 5, 13, 8) și k=3, subprogramul va returna valoarea 14 (10p.)
3. Fie două mulţimi A şi B, fiecare având cel mult 100 de elemente numere naturale de cel mult 4 cifre
A.txt B.txt
8 3 11 26 4 19 10 7 19 25 4 2
2. Variabilele di și dj sunt de tip întreg. Indicați expresia C/C++ care are valoarea 1 dacă și numai
dacă perechea (di, dj) este una dintre următoarele: (-2,-1), (-2,1), (-1,-2), (-1,2), (1,-2), (1,2), (2,
-1), (2,1).
a. abs(di)+abs(dj )==3 c. abs(di)*abs(dj )==2
b. abs(di) -abs(dj )==1 d. abs(di)/abs(dj )==2
3. Variabilele i şi j sunt de tip întreg. Indicați expresia care poate înlocui punctele de suspensie astfel
încât, în urma executării secvenţei obţinute, să se afișeze numerele de mai jos.
for(i=5;i>=1; i --) 0 1 2 3 4
{ for(j =5;j >=1; j --) 1 1 2 3 4
if(......) cout<<5 -j <<’ ‘ ; | printf(“%d “ ,5 -j ) 2 2 2 3 4
else cout<<5 -i <<’ ‘ ; | printf(“%d“ ,5 -i) 3 3 3 3 4
cout<<endl; | printf(“ \n”); 4 4 4 4 4
}
2. Pentru rezultatele unui examen de admitere se memorează un cod alocat unui candidat (număr natural
cu cel mult cinci cifre) și media obținută de către acesta (număr real). Variabilele cod1 și medie1
memorează codul, respectiv media unui candidat, iar variabilele cod2 și medie2 memorează codul,
respectiv media unui alt candidat. Știind că cele două medii au valori diferite, declarați variabilele medie1
și medie2 și scrieți o secvență de instrucțiuni în urma executării căreia să se afișeze pe ecran, separate
printr-un spațiu, codul candidatului cu media cea mai mare. (6p.)
3. Se consideră un tablou unidimensional care conține elementele (80, 31, 25, 24, 19, 16, 12, 7, 5, 3).
Elementele sunt numerotate începând de la 1. Pentru a afla indicele elementului din tablou cu valoarea
x=24, se aplică metoda căutării binare. Scrieţi succesiunea corectă de elemente a căror valoare se compară
cu valoarea lui x pe parcursul metodei indicate. (6p.)
1.Se citește un număr natural n (n>1) și se cere să se scrie cea mai mare putere la care apare un divizor în
descompunerea în factori primi a lui n.
Exemplu: dacă n=40, se afisează 3, deoarece 40=23 *51
Scrieți, în pseudocod, algoritmul de rezolvare pentru problema enunțată. (10p.)
2. Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (2<n<50) şi cele 2•n elemente
ale unui tablou unidimensional, numere întregi cu cel mult 4 cifre. Numărul de elemente pare este egal cu
numărul de elemente impare. Elementele au indici de la 1 la 2•n.
Programul modifică apoi tabloul astfel încât elementele impare să aibă indici impari, iar elementele pare să
aibă indici pari. Programul afişează pe ecran elementele tabloului modificat, separate prin câte un spaţiu.
Exemplu: pentru n=5 şi tabloul (4, 5, 0, 9, 10, 7, 15, 3, 8, 10),
unul dintre tablourile care se pot obţine este (5, 4, 9, 0, 15, 10, 7, 8, 3, 10). (10p.)
3. Fisierul BAC.TXT conține, în ordine crescătoare, cel puțin două si cel mult 10000 de numere naturale.
Numerele sunt separate prin câte un spațiu și au cel mult 9 cifre fiecare. Cel puțin un număr din fisier este
par.
Scrieți un program C/C++ care citeste toate numerele din fisier si, printr-un algoritm eficient din punct de
vedere al timpului de executare si al memoriei utilizate, determină si afisează pe ecran, în ordine strict
crescătoare, separate prin câte un spațiu, toate numerele pare care apar în fisier. Fiecare număr se va afisa
o singură dată.
Exemplu: dacă fisierul are conținutul de mai jos
1 1 2 2 2 2 2 2 7 7 7 10 10 10 14 24 24 24 27 27
pe ecran se afisează, în această ordine, numerele 2 10 14 24.
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia. (2p.)
b. Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)