Textul subiectului și baremului
Subiect BAC Informatică Mate-Info C/C++ 2019 – sesiunea iunie–iulie, varianta 5, rezervă
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 originalSubiectul · pagina 1
Ministerul Educaţiei Naționale
Centrul Naţional de Evaluare şi Examinare
Probă scrisă la informatică Varianta 5
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 2019
Proba E. d)
Informatică
Limbajul C/C++
Varianta 5
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 numărul de valori din intervalul [10,102) pe care le poate avea variabila
întreagă x, astfel încât expresia C/C++ alăturată să aibă valoarea 1.
x%2==x/10
a. 1 b. 5 c. 11 d. 18
2. Subprogramul f este definit alăturat.
Indicați apelul în urma executării căruia
se afișează:
10011
void f (int n)
{ if(n!=0){ f(n/2);
cout<<n%2; | printf(”%d”,n%2);
}
}
a. f(10); b. f(19); c. f(20); d. f(2019);
3. Utilizând metoda backtracking, se generează toate parfumurile formate prin amestecarea a câte 3
esențe distincte din mulţimea {ambră, geranium, mosc, oud, violete}. Două parfumuri sunt distincte
dacă diferă prin cel puțin o esență. Primele patru soluţii obţinute sunt, în această ordine:
(ambră, geranium, mosc), (ambră, geranium, oud), (ambră, geranium, violete) şi
(ambră, mosc, oud). Indicați succesiunea care NU se obține, prin această metodă, în ordinea dată.
a. (ambră, mosc, violete) b. (mosc, oud, violete)
c. (geranium, mosc, oud) d. (oud, violete, geranium)
4. Un graf neorientat are 7 noduri, numerotate de la 1 la 7, și muchiile [1,2], [2,3], [2,4], [3,4].
Indicați numărul muchiilor care trebuie adăugate pentru ca graful să devină complet.
a. 17 b. 15 c. 4 d. 3
5. Într-un arbore cu 10 noduri, numerotate de la 1 la 10, gradul fiecărui nod este maximum 4. Dacă arborele este
reprezentat prin vectorul de „taţi” (x,0,1,1,2,1,8,2,2,2), numărul tuturor valorilor posibile ale lui x este:
a. 3 b. 4 c. 5 d. 6
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.
citește x
(număr natural nenul)
z1
┌repetă
│ citeşte y (număr natural)
│┌pentru d2,y execută
││┌dacă x%d=0 și y%d=0 și d>z atunci
│││ zd
││└■
│└■
│ xy
└până când y=0
scrie z
a) Scrieţi valoarea afişată dacă se citesc, în această
ordine, numerele 15, 6, 4, 8, 3, 0. (6p.)
b) Scrieţi un set de 4 valori distincte care pot fi citite,
în această ordine, astfel încât, în urma executării
algoritmului, să se afișeze 10. (6p.)
c) Scrieţi programul C/C++ corespunzător algoritmului
dat. (10p.)
d) Scrieţi în pseudocod un algoritm, echivalent cu cel
dat, înlocuind structura pentru...execută cu o
structură repetitivă de alt tip. (6p.)Subiectul · pagina 2
Ministerul Educaţiei Naționale
Centrul Naţional de Evaluare şi Examinare
Probă scrisă la informatică Varianta 5
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
2. Expresiile de mai jos au ca valori un șir de maximum 30 de caractere, un număr natural, respectiv un
număr real, reprezentând, în această ordine, următoarele informații memorate pentru o mașină: marca și
date despre motor (turația medie și capacitatea cilindrică). Scrieți definiția unei structuri cu eticheta
masina, care să permită memorarea informațiilor menționate pentru o mașină, și declarați corespunzător
variabila m, de acest tip.
m.marca m.motor.turatie m.motor.capacitate (6p.)
3. Variabilele a şi b permit memorarea câte unui șir de cel mult 20 de caractere. Scrieți ce se afișează în
urma executării secvenței de mai jos.
strcpy(a,"succint"); strcpy(b,"cules");
a[4]=’\0’; strcat(a,b+3);
cout<<a<<strlen(b); | printf("%s%d",a,strlen(b)); (6p.)
SUBIECTUL al III-lea (30 de puncte)
1. Numim sub-număr plat al unui număr natural orice secvență formată din două cifre identice nenule,
aflate pe poziții consecutive în scrierea acestuia.
Subprogramul Suma are un singur parametru, n, prin care primeşte un număr natural (n∈∈∈∈[10,109]).
Subprogramul returnează suma tuturor sub-numerelor plate ale lui n, sau valoarea 0 dacă nu există
niciun astfel de sub-număr. Scrieţi definiţia completă a subprogramului.
Exemplu: dacă n=722722555, atunci subprogramul returnează 154 (22+22+55+55=154), iar dacă
n=140, atunci subprogramul returnează 0. (10p.)
2. Suprafața unui parc este împărțită în n·n zone de formă pătrată dispuse pe n rânduri și n coloane,
numerotate de la 1 la n, fiecare zonă fiind destinată pentru a fi umplută cu pietriș sau pentru plantarea în
aceasta fie doar a florilor, fie doar a ierbii, fie a unui singur copac. Zonelor li se atribuie câte un cod, în
funcție de destinație: codul 0 pentru pietriș, codul 1 pentru flori, codul 2 pentru iarbă și codul 3 pentru
copac.
Scrieți un program C/C++ care citește de la tastatură un număr natural, n (n∈∈∈∈[1,102]), și cele n·n
elemente ale unui tablou bidimensional, reprezentând codurile corespunzătoare zonelor din parc, în
ordinea parcurgerii lor rând după rând, și a fiecărui rând de la stânga la dreapta.
Programul determină zonele destinate plantării unui copac, care au cel puțin o latură
comună cu o zonă cu pietriș și, pentru fiecare dintre acestea, afișează pe ecran
numărul de ordine al rândului pe care se află. Numerele afișate sunt separate prin
câte un spațiu, iar dacă nu există nicio astfel de zonă, se afișează pe ecran mesajul
nu exista.
Exemplu: pentru n=6 și tabloul alăturat se afișează pe ecran, nu neapărat în
această ordine, numerele: 1 2 4 4. (10p.)
0 0 2 2 2 3
3 0 0 0 0 0
2 1 0 0 0 0
1 1 3 3 1 1
3 1 3 3 1 3
1 0 2 2 1 1
3. Fișierul bac.txt conține un șir de cel mult 106 numere naturale din intervalul [0,103), separate prin
câte un spațiu. Se cere să se afișeze pe ecran cea mai mare cifră dintre cele care sunt comune tuturor
termenilor șirului aflat în fișier, sau mesajul nu exista dacă nu există nicio astfel de cifră. Proiectați un
algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dacă fișierul conține numerele
701 917 17 171 817 771 71
atunci se afișează pe ecran 7 (cifrele 1 și 7 sunt comune tuturor termenilor șirului)
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 originalBaremul · pagina 1
Ministerul Educaţiei Naționale Centrul Naţional de Evaluare şi Examinare Probă scrisă la informatică Varianta 5 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 2019 Proba E. d) Informatică BAREM DE EVALUARE ȘI DE NOTARE (comun pentru limbajele C/C++ şi Pascal) Varianta 5 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. SUBIECTUL I (20 de puncte) 1b 2b 3d 4a 5c 5x4p. SUBIECTUL al II - lea (40 de puncte) 1. a) Răspuns corect: 4 6p. b) Pentru răspuns corect 6p. Se acordă câte 2p. pentru fiecare aspect referitor la cele 4 numere cerute, de forma x,y,z,0: - x,y,z distincte și nenule - cmmdc(x,y)=10 sau cmmdc(y,z)=10; - maxim(cmmdc(x,y),cmmdc(y,z))=10; 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ă conform cerinţei, principial corectă, dar nu este echivalent cu cel dat. Se va puncta orice formă corectă de structură 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 pe primul nivel, câmpuri de pe al doilea nivel, etichetă/nume) conform cerinței. 3. Răspuns corect: succes5 6p. Se acordă câte 2p. pentru fiecare aspect (șir, lungime șir, format) conform cerinței. SUBIECTUL al III - lea (30 de puncte) 1. Pentru subprogram corect - antet subprogram (*) - determinare a numărului cerut (**) - 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ă, declarare parametru de intrare) conform cerinței. (**) Se acordă câte 2p. pentru fiecare aspect al cerinței (identificare a două cifre identice pe poziții consecutive, obținere a unui sub-număr plat, algoritm principial corect de determinare a sumei mai multor numere).
Baremul · pagina 2
Ministerul Educaţiei Naționale Centrul Naţional de Evaluare şi Examinare Probă scrisă la informatică Varianta 5 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 2. Pentru program corect - declarare a unei variabile care să memoreze codurile - citire a datelor - determinare a zonelor cu proprietatea cerută (*) - afişare a datelor și 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 al cerinței (identificare a unei zone destinate unui copac/pietriș, zone vecine suport pentru un copac din interiorul suprafeței, zone vecine suport pentru un copac de pe rândul 1/n al suprafeței, zone vecine suport pentru un copac de pe coloana 1/n a suprafeței, zone vecine suport pentru un copac din colțurile suprafeței, cel puțin o latură comună cu zona cu pietriș). 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. O soluţie posibilă utilizează un vector de apariții (fie acesta nr); pe măsura citirii datelor din fișier se determină numărul de valori citite (fie acesta n) şi se actualizează vectorul de apariții, incrementându-se nrc pentru fiecare cifră distinctă c care apare cel puţin o dată în numărul citit curent. Valoarea cerută este cea mai mare cifră c pentru care nrc=n. 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, corectitudine globală a programului1) 8p. 1p. 5p. 1p. 1p. 1) Corectitudinea globală vizează structura, sintaxa, alte aspecte neprecizate în barem.