Înapoi la fișa subiectului

Textul subiectului și baremului

Model oficial BAC Informatică Mate-Info C/C++ 2024

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Ă Model
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 2024
Proba E. d)
INFORMATICĂ
Limbajul C/C++
Model
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 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. Variabila x este de tip întreg și poate memora un număr natural din intervalul
[0,109). Indicați valoarea maximă pe care o poate avea expresia C/C++ alăturată.
x%2024
a. 20.24 b. 295 c. 2023 d. 494071
2. Subprogramele f1, f2 și f3 sunt definite mai jos.
int f1(int n)
{ return n*(n+1)/2; }
int f3(int n)
{ if(n==0) return 0;
if(n%2==1) return n+f3(n-1);
return n*n/4+2*f3(n/2);
}
int f2(int n)
{ if(n!=0) return n+f2(n-1);
return 0;
}
Pentru n=24, se obține aceeași valoare la apelul subprogramelor:
a. f1 și f2 b. f1 și f3 c. f2 și f3 d. f1, f2 și f3
3. Utilizând metoda backtracking, se generează toate modalitățile de a realiza preparate la cuptor,
folosind într-o tavă patru ingrediente distincte din mulțimea {broccoli, cașcaval, conopidă, ou,
pătrunjel, smântână}. Fiecare preparat respectă următoarele condiții:
• NU sunt folosite conopidă și broccoli în același preparat, iar dacă în acesta există una dintre cele
două legume, ea este plasată prima în tavă;
• dacă se folosește pătrunjel într-un preparat, el este plasat ultimul în tavă;
• dacă se folosește smântână și cașcaval în același preparat, smântâna este plasată în tavă înainte
de cașcaval.
Două preparate sunt distincte dacă diferă prin cel puțin un ingredient sau prin ordinea plasării acestora
în tavă. Primele cinci preparate generate sunt, în această ordine: (broccoli, cașcaval, ou,
pătrunjel), (broccoli, ou, cașcaval, pătrunjel), (broccoli, ou, smântână, cașcaval),
(broccoli, ou, smântână, pătrunjel), (broccoli, smântână, cașcaval, ou). Indicați al
șaptelea preparat generat.
a. (broccoli, smântână, ou, cașcaval) b. (conopidă, cașcaval, ou, pătrunjel)
c. (ou, smântână, cașcaval, pătrunjel) d. (smântână, cașcaval, ou, pătrunjel)
4. Un arbore cu 10 noduri, numerotate de la 1 la 10, este reprezentat prin vectorul de „tați”
(7,4,6,7,4,7,0,9,6,5). Indicați numărul de noduri „frunză” ale acestui arbore.
a. 6 b. 5 c. 4 d. 2
5. Într-un oraș sunt 5 piețe, iar una dintre acestea este conectată direct cu fiecare dintre celelalte patru
prin câte o bandă de transport bidirecțională. Indicați numărul minim de benzi de transport
bidirecționale care trebuie adăugate, astfel încât graful neorientat obținut, în care nodurile reprezintă
piețele, iar muchiile reprezintă benzile de transport, să fie eulerian.
a. 0 b. 2 c. 4 d. 6

Subiectul · pagina 2

Ministerul Educației
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la INFORMATICĂ Model
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 [c] partea întreagă a
numărului real c.
citește n (număr natural nenul)
m0; in
┌cât timp i≥1 execută
│ citește x (număr natural)
│┌cât timp x%10 ≤ [x/10]%10 execută
││ x[x/10]
│└■
│ mm+x; ii-1
└■
┌dacă m≠n atunci scrie m
│altfel scrie „egal”
└■
a. Scrieți ce se afișează dacă se citesc, în această
ordine, numerele 4, 721, 20020, 1321, 211. (6p.)
b. Dacă primul număr citit este 2, scrieți un set de
numere distincte din intervalul [10,104] care pot fi
citite în continuare astfel încât, în urma executării
algoritmului, să se afișeze mesajul egal. (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ă repetitivă cu o
structură de tip pentru...execută. (6p.)
2. Variabila t memorează simultan, pentru un telefon, următoarele date: producătorul (o literă mare a
alfabetului englez), frecvența procesorului (număr natural) și dimensiunea, dată prin trei valori,
reprezentând lățimea, grosimea și lungimea, în această ordine, în milimetri (numere reale). Știind că
expresiile C/C++ de mai jos au ca valori producătorul și lățimea telefonului, respectiv frecvența
procesorului acestuia, scrieți definiția unei structuri cu eticheta telefon, care permite memorarea datelor
despre un telefon, și declarați corespunzător variabila t.
t.producator t.dimensiune[0] t.frecventa (6p.)
3. Variabila i este de tip întreg, iar variabila a memorează un tablou bidimensional cu 4 linii și 24 de coloane,
numerotate începând cu 0, cu elemente numere întregi. Fără a utiliza alte variabile decât cele menționate,
scrieți o secvență de instrucțiuni în urma executării căreia să se afișeze pe ecran, separate prin câte un
spațiu, indicii coloanelor cu proprietatea că atât primul, cât și ultimul lor element, au valoarea 2024. (6p.)
SUBIECTUL al III-lea (30 de puncte)
1. Subprogramul produs are doi parametri, a și b, prin care primește câte un număr natural din intervalul
[1,103]. Subprogramul returnează produsul divizorilor naturali comuni lui a și b.
Scrieți definiția completă a subprogramului.
Exemplu: dacă a=20 și b=12, atunci subprogramul returnează valoarea 8 (1∙2∙4=8). (10p.)
2. Un text are cel mult 100 de caractere, iar cuvintele sale sunt formate numai din litere mici ale alfabetului
englez, sunt distincte și sunt separate prin câte un spațiu. Scrieți un program C/C++ care citește de la
tastatură un număr natural n (n[1,102]), apoi un text de tipul precizat mai sus, și afișează pe ecran
cuvinte ale acestuia, pe două linii separate, astfel încât prima linie să conțină mulțimea cuvintelor care
au mai puțin de n litere, iar a doua linie să conțină mulțimea cuvintelor care au mai mult de n litere.
Cuvintele de pe fiecare linie sunt afișate într-o ordine oarecare, iar dacă una dintre cele două mulțimi
este vidă, se afișează pe ecran doar mesajul nu exista.
Exemplu: pentru n=3 și textul era o apa rece si cu gust bun
se poate afișa pe ecran textul alăturat. (10p.)
o si cu
rece gust
3. La un concurs se acordă premiile I, al II-lea și al III-lea. Fiecare premiant este recompensat cu câte o
carte, care are un preț egal pentru toți cei cu același premiu. Prețurile cărților alese pentru premiile I, al II-
lea și al III-lea sunt stabilite astfel încât să fie în ordine strict descrescătoare, iar pentru fiecare premiu să
se ia în considerare cel mai mare preț pentru care există suficiente cărți propuse, în condițiile precizate.
Fișierul bac.txt conține pe prima linie trei numere naturale din intervalul [1,20], n1, n2 și n3,
reprezentând numărul concurenților care primesc premiile I, al II-lea, respectiv al III-lea, iar pe a doua
linie un șir de cel mult 106 numere naturale din intervalul [10,103], separate prin câte un spațiu,
fiecare număr reprezentând prețul unei cărți propuse pentru premiere.
Se cere să se afișeze pe ecran, separate prin câte un spațiu, în ordine strict descrescătoare, prețurile cărților
alese, corespunzătoare celor trei premii, iar dacă nu există trei astfel de prețuri, se afișează mesajul
nu exista. Proiectați un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dacă fișierul conține valorile
3 2 4
500 100 25 100 200 100 20 10 200 100 75 52 52 15 52 20 20 10 30 20 15 100
se afișează pe ecran, în această ordine, numerele 100 52 20.
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Ă Model
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 2024
Proba E. d)
INFORMATICĂ
BAREM DE EVALUARE ȘI DE NOTARE
(comun pentru limbajele C/C++ şi Pascal)
Model
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ă
funcționarea sa.
SUBIECTUL I (20 de puncte)
1c 2d 3a 4b 5b 5x4p.
SUBIECTUL al II - lea (40 de puncte)
1. a) Răspuns corect: 2024 6p.
b) Pentru răspuns corect 6p. Se acordă numai 2p. dacă s-au precizat două valori,
dar care nu conduc la afișarea mesajului cerut, se
acordă numai 3p. dacă s-au introdus două valori care
conduc la afișarea mesajului cerut, dar care nu sunt
conform cerinței.
Valorile cerute sunt două numere distincte din
mulțimea {10, 11, 100, 110, 111, 1000, 1100, 1110,
1111, 10000}.
c) Pentru program corect
- declarare a variabilelor conform cerinței
- citire a datelor conform cerinței
- afișare a datelor conform cerinței
- instrucțiuni repetitive conform cerinței(*)
- instrucțiune de decizie conform cerinței
- atribuiri conform cerinței
- corectitudine globală a programului1)
10p.
1p.
1p.
1p.
3p.
2p.
1p.
1p.
(*) Se acordă numai 2p. dacă doar una dintre
instrucțiunile repetitive este conform cerinței.
d) Pentru algoritm pseudocod corect
- utilizare 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ă numai 1p. dacă algoritmul are o
structură repetitivă conform cerinţei, principial corectă,
dar nu este echivalent cu cel dat.
Se va puncta orice formă corectă de structură
repetitivă conform cerinței (pentru ... execută, for...to
etc.).
(**) Se acordă câte 1p. pentru fiecare aspect specific
(expresie inițială a contorului, expresie finală a
contorului, actualizare a contorului numai prin
instrucțiunea repetitivă) conform cerinței.
2. Pentru rezolvare corectă
- definire a structurii/înregistrării (*)
- declarare a variabilei conform cerinței
- corectitudine globală a secvenței1)
6p.
4p.
1p.
1p.
(*) Se acordă câte 1p. pentru fiecare aspect (definire
principial corectă a unei structuri/înregistrări, câmpuri
de tip simplu, câmp de tip tablou, etichetă/nume)
conform cerinței.
3. Pentru rezolvare corectă
- determinare a valorilor indicate (*)
- afișare a datelor în formatul indicat
- corectitudine globală a secvenței1)
6p.
4p.
1p.
1p.
(*) Se acordă câte 1p. pentru fiecare aspect specific
(acces la primul element al unei coloane, acces la ultimul
element al unei coloane, elemente suport analizate,
indici suport determinați) conform cerinței.

Baremul · pagina 2

Ministerul Educației
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la INFORMATICĂ Model
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 al subprogramului (*)
- determinare a numărului cerut (**)
- instrucțiune/instrucțiuni de returnare a
rezultatului
- declarare a tuturor variabilelor locale,
corectitudine globală a subprogramului1)
10p.
2p.
6p.
1p.
1p.
(*) Se acordă câte 1p. pentru fiecare aspect al
antetului (structură, parametri de intrare) conform
cerinței.
(**) Se acordă câte 2p. pentru fiecare aspect
(identificare a unui divizor al unui număr, algoritm de
bază pentru produsul unei serii de valori, divizori
suport înmulțiți) conform cerinței.
2. Pentru program corect
- declarare a unei variabile care să
memoreze un șir de caractere
- citire a datelor
- afișare a cuvintelor conform cerinței (*)
- tratare a cazului nu exista
- declarare a variabilelor simple,
corectitudine globală a programului1)
10p.
1p.
1p.
6p.
1p.
1p.
(*) Se acordă câte 1p. pentru fiecare aspect (obținere
a unui cuvânt, determinare a lungimii unui cuvânt,
cuvinte suport analizate, afișare consecutivă a
cuvintelor din aceeași mulțime, ordine a mulțimilor de
cuvinte, afișare pe două linii separate) conform
cerinței.
3. a) Pentru răspuns corect
- descriere coerentă a 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 liniar.
O soluție posibilă utilizează un vector de apariții, ap,
unde app memorează numărul de apariții ale prețului p
în șirul celor propuse. Pe măsura citirii datelor din
fișier se actualizează app pentru fiecare valoare p
citită. Valorile cerute, x, y și z (x>y>z, inițializate cu
valori nule), se determină prin parcurgerea vectorului
de apariții în ordine descrescătoare a lui p și
memorând primele prețuri p adecvate pentru fiecare
premiu, astfel: dacă app≥n1 și încă nu s-a determinat
un preț pentru premiul I (x=0), atunci x=p; dacă
app≥n2 și s-a determinat un preț pentru premiul I, dar
nu și pentru premiul al II-lea (x≠0, dar y=0), atunci
y=p; dacă app≥n3 și s-a determinat un preț pentru
premiul al II-lea, dar nu și pentru premiul al III-lea
(y≠0, dar z=0), atunci z=p. Algoritmul se încheie dacă
z≠0 sau dacă s-a încheiat parcurgerea vectorului de
apariții. Dacă după parcurgerea vectorului de apariții
z=0, atunci se afișează mesajul indicat.
b) Pentru program corect
- operații cu fișiere: declarare, pregătire
în vederea citirii, citire din fişier
- determinare a valorilor cerute (*),(**)
- utilizare a unui algoritm eficient (***)
- declarare a variabilelor, afișare a
datelor, corectitudine globală a
programului1)
8p.
1p.
5p.
1p.
1p.
1) Corectitudinea globală vizează structura, sintaxa, alte aspecte neprecizate în barem.