Înapoi la fișa subiectului

Textul subiectului și baremului

Simulare BAC Informatică Mate-Info C/C++ 2022 – 30 martie 2022

Acesta este textul selectabil extras automat din documentele PDF ale acestei variante. Pentru formule, tabele, pseudocod sau grafice, verifică pagina originală din PDF înainte de a rezolva exercițiile.

Subiectul

Deschide PDF-ul original

Subiectul · pagina 1

Ministerul Educației
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la informatică Simulare
Limbajul C/C++
Filieră teoretică, profil real, specializare matematică-informatică / matematică-informatică intensiv informatică
Filieră vocațională, profil militar, specializare matematică-informatică
Pagina 1 din 2
Examenul național de bacalaureat 2022
Proba E. d)
Informatică
Limbajul C/C++
Simulare
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ă zece puncte din oficiu.
• Timpul de lucru efectiv este de trei 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 muchie are extremități distincte și oricare două 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. Variabila x este de tip întreg. Indicați o expresie care are valoarea 1 dacă și
numai dacă expresia C/C++ alăturată are valoarea 1. (4p.)
x<=3 || x>30
a. !(x<3) && x<30 b. !(x>=3 && x<=30)
c. !(x<3 || x<=30) d. !(x>3) || !(x<=30)
2. Subprogramul f este
definit alăturat.
int f(int st,int dr,int v[])
{ if(st==dr) if(v[st]==st)return 1;
else return 0;
else return f(st,(st+dr)/2,v) + f(1+(st+dr)/2,dr,v);
}
Știind că variabila x memorează un tablou unidimensional cu elementele (7,1,2,5,4), în această
ordine, numerotate de la 0 la 4, indicați valoarea f(0,4,x).
a. 2 b. 3 c. 4 d. 5
3. Un sport se desfășoară pe o pistă înghețată, cu o echipă alcătuită din 4 jucători, care sunt, în această
ordine, lider, secund, vice-skip și skip. Lotul este format din jucătorii din mulțimea {Alin, Bogdan,
Cristian, Răzvan, Ștefan, Valentin}; Cristian poate fi doar lider, Alin și Valentin pot fi
doar lider sau secund, Bogdan poate fi doar secund, iar ceilalți doi jucători pot fi doar vice-skip sau skip.
Două echipe sunt distincte dacă există cel puțin un rol care, în cele două echipe, este atribuit unor
jucători diferiți. Pentru antrenamente, s-au format echipe în toate formulele posibile, primele șase soluții
generate fiind, în această ordine: {Alin, Bogdan, Răzvan, Ștefan}, {Alin, Bogdan, Ștefan,
Răzvan}, {Alin, Valentin, Răzvan, Ștefan}, {Alin, Valentin, Ștefan, Răzvan},
{Cristian, Alin, Răzvan, Ștefan},{Cristian, Alin, Ștefan, Răzvan}.
Indicați soluția generată imediat după {Cristian, Valentin, Ștefan, Răzvan}.
a. {Cristian, Bogdan, Răzvan, Ștefan} b. {Cristian, Bogdan, Ștefan, Răzvan}
c. {Valentin, Alin, Răzvan, Ștefan} d. {Valentin, Bogdan, Ștefan, Răzvan}
4. Variabila oras, declarată alăturat, memorează unele date obținute în urma
recensământului populației în 100 dintre orașele țării. Știind că densitatea
unui oraș este egală cu raportul dintre numărul de locuitori și suprafața
acestuia (exprimată în km2), indicați o expresie a cărei valoare este egală
cu densitatea primului oraș.
struct recensamant
{ char nume[21];
int nrLocuitori;
float suprafata;
}oras[100];
a. oras[0].nrLocuitori/oras[0].suprafata b. oras.nrLocuitori[0]/oras.suprafata[0]
c. nrLocuitori[0].oras/suprafata[0].oras d. nrLocuitori.oras[0]/suprafata.oras[0]
5. Un graf neorientat complet are 4 noduri. Indicați o valoare care NU poate fi numărul de muchii ale unui
subgraf al acestui graf.
a. 0 b. 1 c. 2 d. 3

Subiectul · pagina 2

Ministerul Educației
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la informatică Simulare
Limbajul C/C++
Filieră teoretică, profil real, specializare matematică-informatică / matematică-informatică intensiv informatică
Filieră vocațională, profil militar, specializare matematică-informatică
Pagina 2 din 2
SUBIECTUL al II-lea (40 de puncte)
1. Algoritmul alăturat este reprezentat în pseudocod.
S-a notat cu a%b restul împărțirii numărului natural a la
numărul natural nenul b și cu [a] partea întreagă a
numărului real a.
citește n,x (numere naturale nenule)
nr0; i1
┌cât timp i≤n execută
│ citește y (număr natural)
│┌cât timp y≠0 și y%2≠x%2 execută
││ y[y/10]
│└■
│┌dacă y=x atunci nrnr+1
│└■
│ ii+1
└■
scrie nr
a. Scrieți ce se afișează în urma executării algoritmului dacă
se citesc, în această ordine, numerele 6, 16, 4273, 1679,
3165, 16, 200, 167. (6p.)
b. Dacă primele două numere citite sunt, în această ordine, 2
și 22, scrieți o secvență de numere distincte din intervalul
[103,104) care pot fi citite în continuare astfel încât, în
urma executării algoritmului, să se afișeze valoarea 2. (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 prima structură
cât timp...execută cu o structură repetitivă de tip pentru...execută. (6p.)
2. Într-un arbore cu rădăcină un nod se află pe nivelul x dacă lanțul elementar care are o extremitate în
nodul respectiv și cealaltă extremitate în rădăcina arborelui are lungimea x. Pe nivelul 0 se află un
singur nod (rădăcina). Un arbore cu rădăcină are 10 noduri și este reprezentat prin vectorul de „tați”
(10,5,5,10,0,10,9,2,5,2). Enumerați trei dintre frunzele situate în arbore pe niveluri impare. (6p.)
3. Într-o seră se folosesc vase pătrate, care conțin câte o singură floare (lalea, frezie sau narcisă). Vasele
sunt așezate pe trei rânduri și sunt aliniate ca în exemplu. Patru flori de același tip formează un romb
dacă vasele în care se află sunt dispuse în jurul unui alt vas, cu care fiecare are în comun câte o latură.
Variabilele j și ok sunt întregi, iar variabila a este un tablou bidimensional cu 3 linii și 15 coloane, cu
elemente de tip char, în care fiecare linie, în ordine, memorează succesiunea de flori aflate pe un rând
al serei, notându-se cu L lalelele, cu F freziile și cu N narcisele. Fiecare linie a tabloului corespunde, în
ordine, unui rând de vase din seră. Liniile și coloanele sunt numerotate începând de la 0.
Scrieți secvența C/C++ de mai jos, înlocuind punctele de suspensie astfel încât, în urma executării secvenței
obținute, variabila ok să aibă valoarea 1 dacă florile formează cel puțin un romb, sau valoarea 0 în caz contrar.
Exemplu: în urma executării secvenței pentru tabloul de mai jos, ok=1 (sunt evidențiate 4 romburi).
ok=........;
for(j=.....;j<.....;j++)
..................
L L L N L F F F N F N F N F F
N L L L N L L F F F F N F N F
F N L F L N F L F F N L F F N (6p.)
SUBIECTUL al III-lea (30 de puncte)
1. Subprogramul rest are patru parametri:
• x, y și n, prin care primește câte un număr natural din intervalul [1,106], x<y<n;
• k, prin care furnizează cea mai mare valoare naturală din intervalul [1,n] pentru care atât restul
împărțirii la x, cât și restul împărțirii la y, sunt egale cu 2, sau 0 dacă nu există o astfel de valoare.
Scrieți definiția completă a subprogramului.
Exemplu: pentru x=10, y=101 și n=3000, subprogramul returnează numărul 2022 (pentru numerele 2,
1012 și 2022 atât restul împărțirii la 10, cât și restul împărțirii la 101, este 2). (10p.)
2. Un text, de cel mult 250 de caractere, reprezintă o listă cu date de identificare ale invitaților la o petrecere;
fiecare invitat are un prenume și un nume, care apar în listă în această ordine, urmate de simbolul ;
(punct și virgulă), ca în exemplu. Numele și prenumele sunt formate din câte un singur cuvânt, compus din
litere mari ale alfabetului englez, și sunt separate printr-un spațiu.
Scrieți un program C/C++ care citește de la tastatură un text de tipul precizat mai sus apoi, de pe rândul
următor, un cuvânt, x, și afișează pe ecran, separate prin câte un spațiu, numele tuturor invitaților care au
prenumele x, ca în exemplu, sau mesajul NU dacă nu există astfel de invitați.
Exemplu: dacă lista este DAN MARIS; DANILA PREPELEAC; DAN POPA; EDANA DAN;
și cuvântul x este DAN se afișează pe ecran MARIS POPA (10p.)
3. Se citește de la tastatură un număr natural, n (n[1,109]), și se cere să se scrie în fișierul text
bac.txt cel mai mare număr natural p cu proprietatea că numărul 45p este divizor al numărului obținut
prin evaluarea produsului 1∙2∙3∙...∙n.
Proiectați un algoritm eficient din punctul de vedere al timpului de executare și al memoriei utilizate.
Exemplu: dacă n=14, fișierul conține numărul 2 (452=2025 este divizor al lui 1∙2∙3∙..∙14=87178291200)
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.)

Baremul

Deschide PDF-ul original

Baremul · pagina 1

Ministerul Educației
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la informatică Simulare
Filieră teoretică, profil real, specializare matematică-informatică / matematică-informatică intensiv informatică
Filieră vocațională, profil militar, specializare matematică-informatică
Barem de evaluare și de notare
Pagina 1 din 2
Examenul național de bacalaureat 2022
Proba E. d)
Informatică
BAREM DE EVALUARE ȘI DE NOTARE
(comun pentru limbajele C/C++ și Pascal)
Simulare
Filieră teoretică, profil real, specializare matematică-informatică / matematică-informatică intensiv informatică
Filieră vocațională, profil militar, specializare matematică-informatică
• Se punctează orice modalitate de rezolvare corectă a cerințelor.
• Nu se acordă punctaje intermediare, altele decât cele precizate explicit în barem. Nu se
acordă fracțiuni de punct. Se acordă zece puncte din oficiu. Nota finală se calculează prin
împărțirea la zece a punctajului total acordat pentru lucrare.
• Utilizarea unui tip de date care depășește domeniul de valori precizat în enunț (de exemplu
tipuri întregi cu semn pentru memorarea numerelor naturale, dimensiune a tablourilor) este
acceptată din punctul de vedere al corectitudinii programului, dacă acest lucru nu afectează
corectitudinea în funcționarea programului.
SUBIECTUL I (20 de puncte)
1d 2b 3c 4a 5c 5x4p.
SUBIECTUL al II - lea (40 de puncte)
1. a) Răspuns corect: 3 6p.
b) Pentru răspuns corect 6p. Se acordă câte 2p. pentru fiecare aspect (număr de
valori scrise, primul număr, al doilea număr) conform
cerinței.
Cele două numere conform cerinței sunt de forma
22𝑥𝑦̅̅̅̅̅̅̅ , unde x și y sunt cifre impare.
c) Pentru program corect
-declarare a variabilelor
-citire a datelor
-afișare a datelor
-instrucțiune de decizie
-instrucțiuni repetitive (*)
-atribuiri
-corectitudine globală a programului1)
10p.
1p.
1p.
1p.
2p.
3p.
1p.
1p.
(*) Se acordă numai 2p. dacă doar una dintre
instrucțiunile repetitive este conform cerinței.
d) Pentru algoritm pseudocod corect
-utilizare principial corectă a unei structuri
repetitive de tip pentru...execută (*)
-aspecte specifice ale secvenței obținute
prin înlocuire, conform cerinței (**)
-algoritm complet, corectitudine globală a
algoritmului1)
6p.
2p.
3p.
1p.
(*) Se acordă punctajul chiar dacă algoritmul obținut
nu este echivalent cu cel dat.
(**) Se acordă câte 1p. pentru fiecare aspect (expresie
limită inferioară contor, expresie limită superioară
contor, doar actualizare automată contor) conform
cerinței.
2. Pentru răspuns corect 6p. Se acordă câte 2p. pentru fiecare dintre cele trei
noduri conform cerinței (oricare dintre nodurile
1, 3, 4, 6).
3. Pentru răspuns corect
-acces la un element al tabloului
-verificare a proprietății cerute (*)
-corectitudine globală a secvenței1)
6p.
1p.
4p.
1p.
(*) Se acordă câte 1p. pentru fiecare aspect
(poziționare a elementelor care compun un romb,
valoare comună a elementelor care compun un romb,
algoritm de bază pentru verificarea unei proprietăți,
elemente suport verificate) conform cerinței.

Baremul · pagina 2

Ministerul Educației
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la informatică Simulare
Filieră teoretică, profil real, specializare matematică-informatică / matematică-informatică intensiv informatică
Filieră vocațională, profil militar, specializare matematică-informatică
Barem de evaluare și de notare
Pagina 2 din 2
SUBIECTUL al III - lea (30 de puncte)
1. Pentru subprogram corect
-antet subprogram (*)
-determinare a valorii cerute (**)
-declarare a tuturor variabilelor locale,
tratare a cazului 0, corectitudine globală a
subprogramului1)
10p.
3p.
6p.
1p.
(*) Se acordă câte 1p. pentru fiecare aspect al
antetului (structură, parametri de intrare, parametru de
ieșire) conform cerinței.
(**) Se acordă câte 2p. pentru fiecare aspect
(identificare a unui număr corespunzător restului cerut,
algoritm de bază pentru determinarea ultimei/celei mai
mari valori cu o anumită proprietate dintr-o serie, valori
suport cu proprietatea cerută identificate) conform
cerinței.
2. Pentru program corect
-declarare a unei variabile care să
memoreze un șir de caractere
-citire a datelor în ordinea indicată
-determinare a cuvintelor/numelor cerute (*)
-tratare a cazului NU și afișare fie a
numelor în formatul cerut, fie a mesajului
indicat
-declarare a variabilelor simple,
corectitudine globală a programului1)
10p.
1p.
1p.
6p.
1p.
1p.
(*) Se acordă câte 1p. pentru fiecare aspect specific
(identificare a unui cuvânt în cadrul unui șir,
identificare a unui cuvânt egal cu un cuvânt dat x,
identificare a unui nume corespunzător unui prenume,
tratare a cazului în care cuvântul x dat corespunde
unui nume, caractere utile într-un nume, cuvinte
suport identificate) conform cerinței.
3. a) Pentru răspuns corect
-coerență a descrierii algoritmului (*)
-justificare a elementelor de eficiență
2p.
1p.
1p.
(*) Se acordă punctajul chiar dacă algoritmul ales nu
este eficient.
(**) Se acordă numai 3p. dacă algoritmul este
principial corect, dar nu oferă rezultatul cerut pentru
toate seturile de date de intrare.
(***) Se acordă punctajul numai pentru un algoritm cel
mult liniar care utilizează eficient memoria.
O soluție posibilă are în vedere că 45=32∙5 și parcurge
numerele naturale din intervalul [2,n], determinând
pentru fiecare număr curent k numărul t de apariții ale
lui 3, respectiv numărul c de apariții ale lui 5, în
descompunerea în factori primi a lui k, și realizând pe
parcurs suma tuturor valorilor t determinate (st),
respectiv suma tuturor valorilor c determinate (sc).
Valoarea cerută este min([st/2],sc).
O altă soluție posibilă determină valorile st și sc astfel:
st=[n/3]+[n/32]+[n/33]+[n/34]+ ...+0
sc=[n/5]+[n/52]+[n/53]+[n/54]+ ...+0
Valoarea cerută este min([st/2],sc).
b) Pentru program corect
-operații cu fișiere: declarare, pregătire în
vederea scrierii, scriere în fișier
-determinare a valorii cerute (*),(**)
-utilizare a unui algoritm eficient (***)
-declarare a variabilelor, citire a datelor,
corectitudine globală a programului1)
8p.
1p.
5p.
1p.
1p.
1) Corectitudinea globală vizează structura, sintaxa, alte aspecte neprecizate în barem.