Înapoi la fișa subiectului

Textul subiectului și baremului

Subiect BAC Informatică Mate-Info C/C++ 2020 – varianta 2

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 și Cercetării
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la informatică Varianta 2
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 de bacalaureat național 2020
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.
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 din intervalul
[1000,2000]. Indicați valoarea minimă pe care o poate avea expresia C/C++
alăturată.
(x-999)%1000
a. 0 b. 2 c. 999 d. 1000
2. Subprogramul f este definit alăturat.
Indicați ce se afișează în urma
apelului de mai jos.
f(9);
void f(int x)
{ if(x>=2)
{ if(x%2==0) cout<<0; | printf(”0”);
f(x/2);
}
else cout<<7; | printf(”7”);
cout<<x; | printf(”%d”,x);
}
a. 91 b. 942 c. 0071 d. 0071249
3. Utilizând metoda backtracking, se generează toate meniurile care cuprind câte patru feluri distincte de
mâncare din mulțimea {aperitiv, desert, legume, paste, salată, supă}, fiecare meniu
respectând următoarele condiții:
• dacă există aperitiv, este servit primul;
• dacă există desert, este servit ultimul;
• NU sunt servite legume și salată în același meniu;
• dacă există paste și supă în același meniu, pastele NU sunt servite înainte de supă.
Două meniuri sunt distincte dacă diferă prin cel puțin un fel de mâncare sau prin ordinea servirii
acestora. Primele cinci meniuri generate sunt, în această ordine: (aperitiv, legume, paste,
desert), (aperitiv, legume, supă, desert), (aperitiv, legume, supă, paste), (aperitiv,
paste, legume, desert), (aperitiv, paste, salată, desert). Indicați al șaselea meniu generat.
a. (aperitiv, salată, paste, desert) b. (aperitiv, salată, supă, desert)
c. (aperitiv, salată, supă, paste) d. (aperitiv, supă, legume, desert)
4. Un graf orientat cu 5 vârfuri, numerotate de la 1 la 5, este reprezentat alăturat.
Indicați numărul de componente tare conexe ale grafului.
a. 1 b. 2 c. 3 d. 4
5. Un arbore cu rădăcină are 20 de noduri, dintre care 10 noduri de tip “frunză”. Indicați numărul maxim de
noduri care au același “tată” în acest arbore.
a. 5 b. 7 c. 10 d. 15

Subiectul · pagina 2

Ministerul Educației și Cercetării
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la informatică Varianta 2
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)
m0
┌pentru i1,n execută
│ citește x (număr natural)
│┌cât timp x%10 > [x/10]%10 execută
││ x[x/10]
│└■
│ mm+x
└■
┌dacă m>0 atunci scrie m
│altfel scrie „niciunul”
└■
a. Scrieți ce se afișează dacă se citesc, în această
ordine, numerele 5, 127, 2019, 1005, 7, 1900. (6p.)
b. Dacă primul număr citit este 2, scrieți un set 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 mesajul niciunul. (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ă de alt tip. (6p.)
2. Variabila c memorează date specifice unui cerc: coordonatele reale (abscisa și ordonata), în planul xOy,
ale centrului cercului, precum și lungimea razei acestuia. Știind că expresiile C/C++ de mai jos au ca valori
numere reale reprezentând datele specifice ale unui cerc, scrieți definiția unei structuri cu eticheta
figura, care permite memorarea datelor precizate, și declarați corespunzător variabila c.
c.centru.x c.centru.y c.raza (6p.)
3. Variabilele i și j sunt de tip întreg, iar variabila m memorează un tablou
bidimensional cu 7 linii și 7 coloane, numerotate de la 0 la 6, cu elemente de tip
char. Inițial, fiecare element memorează caracterul *. Fără a utiliza alte
variabile, scrieți secvența de instrucțiuni de mai jos, înlocuind punctele de
suspensie astfel încât, în urma executării secvenței obținute, variabila m să
memoreze tabloul alăturat.
for(i=0;i<7;i++)
for(j=0;j<7;j++)
.................. (6p.)
a b c d e f g
+ a b c d e f
+ + a b c d e
+ + + a b c d
+ + + + a b c
+ + + + + a b
+ + + + + + a
SUBIECTUL al III-lea (30 de puncte)
1. Subprogramul multiplu are un singur parametru, n, prin care primește un număr natural
(n∈∈∈∈[1,104]). Subprogramul returnează cel mai mic multiplu nenul al lui n cu proprietatea că este
pătrat perfect. Scrieți definiția completă a subprogramului.
Exemplu: dacă n=72 sau n=144, subprogramul returnează numărul 144 (144=122). (10p.)
2. Numim citat într-un text o secvență de caractere din acel text care începe cu un caracter < și se termină
cu un caracter >, celelalte caractere ale secvenței fiind diferite de < și >.
Un text de cel mult 100 de caractere (litere mici ale alfabetului englez, spații și caracterele < şi >) conține
cel puțin un citat. Textul nu conține alte caractere < şi > decât cele care mărginesc citatele, și oricare
două citate nu au nici caractere < şi > și nici alte caractere în comun.
Scrieți un program C/C++ care citește de la tastatură un text de tipul precizat și îl transformă în memorie
prin înlocuirea tuturor literelor mici cuprinse în citate cu literele mari corespunzătoare, celelalte rămânând
nemodificate, ca în exemplu. Programul afișează pe ecran textul obținut.
Exemplu: pentru textul mai bine sa fii un <om de valoare> decat un <om de succes>
se afișează mai bine sa fii un <OM DE VALOARE> decat un <OM DE SUCCES> (10p.)
3. Se numește vârf într-un șir de numere naturale un termen al șirului care este strict mai mare decât
fiecare dintre cei doi termeni vecini cu el, aflați în șir pe poziția din stânga, respectiv din dreapta sa.
Fișierul bac.in conține un șir de cel mult 106 numere naturale din intervalul [0,109], separate prin
câte un spațiu. Se cere să se afișeze pe ecran vârful din șirul aflat în fișier pentru care valoarea
absolută a diferenței dintre cei doi vecini ai săi este minimă. Dacă există mai multe astfel de numere, se
afișează cel mai mare dintre ele, iar dacă nu există niciun vârf, se afișează pe ecran mesajul
nu exista. Proiectați un algoritm eficient din punctul de vedere al timpului de executare și al spațiului
de memorie utilizat.
Exemplu: dacă fișierul conține șirul 2 7 10 5 6 2 1 3 20 17 9 11 7 3 10 6 2
se afișează pe ecran 11
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 și Cercetării
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la informatică Varianta 2
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 de bacalaureat național 2020
Proba E. d)
Informatică
BAREM DE EVALUARE ȘI DE NOTARE
(comun pentru limbajele C/C++ și Pascal)
Varianta 2
Filieră teoretică, profil real, specializare matematică-informatică / matematică-informatică intensiv informatică
Filieră vocațională, profil militar, specializare matematică-informatică
• Se punctează oricare alte modalități de rezolvare corectă a cerințelor.
• Nu se acordă punctaje intermediare, altele decât cele precizate explicit prin barem. Nu se
acordă fracțiuni de punct. Se acordă 10 puncte din oficiu. Nota finală se calculează prin
împărțirea punctajului total acordat pentru lucrare la 10.
• Utilizarea unui tip de date care depășește domeniul de valori precizat în enunț este acceptată
dacă acest lucru nu afectează corectitudinea în funcționarea programului (de exemplu, pentru
numere naturale sunt acceptate și tipuri de date care permit memorarea numerelor întregi).
SUBIECTUL I (20 de puncte)
1a 2d 3a 4b 5c 5x4p.
SUBIECTUL al II - lea (40 de puncte)
1. a) Răspuns corect: 2020 6p.
b) Pentru răspuns corect 6p. Se acordă câte 2p. pentru fiecare aspect specific (număr
de valori scrise, prima valoare, a doua valoare) conform
cerinței.
Se punctează valori din intervalul indicat, cu cifrele în
ordine strict crescătoare.
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
-echivalență a prelucrării realizate,
conform cerinței (*)
-corectitudine globală a algoritmului1)
6p.
5p.
1p.
(*) Se acordă numai 2p. dacă algoritmul are o
structură repetitivă de tipul cerut, principial corectă,
dar nu este echivalent cu cel dat.
Se punctează orice formă de structură repetitivă de
tipul cerut (cât timp…execută, repetă…până când,
repetă…cât timp, execută…până când,
execută…cât timp etc.).
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 specific
(definire principial corectă a unei structuri/înregistrări,
câmp de tip simplu, câmp de tip structurat,
etichetă/nume) conform cerinței.
Se punctează câmpul de tip structurat, conform
cerinței, atât dacă structura/înregistrarea
corespunzătoare este definită separat cât și dacă este
definită în cadrul structurii/înregistrării cerute.
3. Pentru rezolvare corectă
-acces la un element al tabloului
-atribuire a valorilor cerute (*)
-corectitudine globală a secvenței1)
6p.
1p.
4p.
1p.
(*) Se acordă câte 1p. pentru fiecare aspect specific
(identificare a elementelor din stânga diagonalei
principale, identificare a elementelor de pe diagonala
principală, identificare a elementelor din dreapta
diagonalei principale, corespondență elemente-caractere
suport) conform cerinței.

Baremul · pagina 2

Ministerul Educației și Cercetării
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la informatică Varianta 2
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 (**)
-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ă, parametru de intrare) conform
cerinței.
(**) Se acordă câte 2p. pentru fiecare aspect specific
(multiplu, pătrat perfect, minim) conform cerinței.
2. Pentru program corect
-declarare a unei variabile care poate
memora un șir de caractere
-citire a datelor
-transformare a șirului conform cerinței
(*)
-afișare a datelor
-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 începutului unui citat, identificare a
finalului unui citat, identificare a unei litere dintr-un
citat/din afara unui citat, transformare a unei litere mici
în litera mare corespunzătoare, caractere suport
transformate, transformare în memorie) 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
liniar (de complexitate O(n)), care utilizează eficient
memoria.
O soluţie posibilă determină numărul cerut pe măsura
citirii datelor din fișier: se memorează ultimele trei
numere citite și, dacă penultimul număr citit este vârf,
se actualizează, după caz, numărul cerut, având în
vedere calculul corect al diferenței indicate.
b) Pentru program corect
-operații cu fișiere: declarare, pregătire în
vederea citirii, citire din fișier
-determinare a valorii cerute (*),(**)
-utilizare a unui algoritm eficient (***)
-declarare a variabilelor, afișare a datelor
și tratare a cazului nu exista,
corectitudine globală a programului1)
8p.
1p.
5p.
1p.
1p.
1) Corectitudinea globală vizează structura, sintaxa, alte aspecte neprecizate în barem.