Textul subiectului și baremului
Test de antrenament BAC Informatică Mate-Info C/C++ 2021 – 12 martie 2021, testul 1
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
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la informatică Testul 1
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 2021
Proba E. d)
Informatică
Limbajul C/C++
Testul 1
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. Indicați o expresie C/C++ echivalentă cu cea alăturată. (x>5) && (x<20) || (x!=y)
a. (x>5 || x<20) && (x==y) b. !(x<=5 || x>=20) || (x!=y)
c. (x>5 || x<20) && (x!=y) d. !(x<5 || x>20) && (x!=y)
2. Subprogramul f este definit alăturat. Indicați
valoarea f(4770777,7).
int f (int n, int k)
{ if (n!=0)
if(n%10==k) return 1+f(n/10,k);
return 0;
}
a. 2 b. 3 c. 4 d. 5
3. Variabila x este declarată alăturat. Indicați secvența care, în urma
executării, memorează în variabila x ziua, luna și anul
corespunzătoare unei date calendaristice citite de la tastatură.
struct data
{
int zi, luna, an;
}x;
a. cin>>x.zi>>x.luna>>x.an; | scanf(”%d%d%d”,&x.zi,&x.luna,&x.an);
b. cin>>zi.x>>luna.x>>an.x; | scanf(”%d%d%d”,&zi.x,&luna.x,&an.x);
c. cin>>x(zi,luna,an); | scanf(”%d%d%d”,&x(zi,luna,an));
d. cin>>x(zi)>>x(luna)>>x(an); | scanf(”%d%d%d”,&x(zi),&x(luna),&x(an));
4. Un arbore cu rădăcină are 8 noduri, numerotate de la 1 la 8, și muchiile [1,3], [1,7], [1,8],
[2,4], [3,5], [3,6], [4,5]. Știind că rădăcina arborelui este nodul numerotat cu 6, indicați nodurile
de tip frunză ale arborelui dat.
a. 6,8 b. 2,6 c. 4,7,8 d. 2,7,8
5. Un graf neorientat are 6 noduri și fiecare dintre acestea are gradul egal cu 1. Indicați numărul de
componente conexe ale grafului.
a. 1 b. 2 c. 3 d. 4Subiectul · pagina 2
Ministerul Educației
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la informatică Testul 1
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)
m10
┌dacă n=0 atunci
│ m0
│altfel
│┌repetă
││ cn%10; n[n/10]
││┌dacă c<=m atunci mc
│││altfel m-1
││└■
│└până când n=0
└■
scrie m
a. Scrieți numărul afișat în urma executării algoritmului dacă pentru n
se citește valoarea 205579. (6p.)
b. Scrieți trei numere din intervalul [103,104) care pot fi citite astfel
încât, pentru fiecare dintre acestea, în urma executării algoritmului,
să se afișeze 7. (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 repetă...până când cu o structură repetitivă
de alt tip. (6p.)
2. Utilizând metoda backtracking, sunt generate toate numerele din intervalul [100,999], cu proprietatea
că au cifrele în ordine crescătoare, cifrele aflate pe poziții consecutive sunt de paritate diferită, iar suma
lor este egală cu 14. Scrieți toate numerele generate, în ordinea obținerii lor. (6p.)
3. Variabilele s1 și s2 pot
memora câte un șir de cel mult
50 de caractere. Scrieți ce se
afișează în urma executării
secvenței alăturate.
(6p.)
strcpy(s1,"bac2021");
cout<<strlen(s1)<<endl; | printf("%d\n",lengtf(s1));
strcpy(s2,s1+3); strcpy(s2+2,"20-");
strcat(s2,s1+3);
cout<<s2; | printf("%s",s2);
SUBIECTUL al III-lea (30 de puncte)
1. Subprogramul divX are doi parametri, n și x, prin care primește câte un număr natural din intervalul
[2,50]. Subprogramul afișează pe ecran, în ordine descrescătoare, separate prin câte un spațiu,
primele n numere naturale nenule divizibile cu x.
Scrieți definiția completă a subprogramului.
Exemplu: dacă n=4 și x=15 în urma apelului se afișează numerele 60 45 30 15 (10p.)
2. Scrieți un program C/C++ care citește de la tastatură numărul natural n (n[2,102]) și elementele unui
tablou bidimensional cu n linii și n coloane, numere naturale din intervalul [0,109].
Programul afișează pe ecran, separate prin câte un spațiu, elementele primului pătrat
concentric, parcurs în sens invers al acelor de ceasornic, începând din colțul său stânga-
sus, ca în exemplu. Primul pătrat concentric este format din prima și ultima linie, prima și
ultima coloană a tabloului.
Exemplu: pentru n=5 și tabloul alăturat, se afișează pe ecran numerele
1 2 3 4 5 6 7 8 9 0 2 4 6 8 1 3 (10p.)
1 3 1 8 6
2 9 2 7 4
3 5 8 5 2
4 1 6 3 0
5 6 7 8 9
3. Fișierul bac.in conține cel mult 106 numere naturale din intervalul [0,109], separate prin câte un
spațiu. Se cere să se afișeze pe ecran, în ordine descrescătoare, cele mai mari două numere de două
cifre distincte care NU se află în fișier. Numerele afișate sunt separate printr-un spațiu, iar dacă nu
există două astfel de numere, se afișează pe ecran mesajul nu exista. Proiectați un algoritm eficient
din punctul de vedere al timpului de executare.
Exemplu: dacă fișierul bac.in conține numerele 12 235 123 67 98 6 96 94 123 67 98 100
se afișează pe ecran, în această ordine, numerele 97 95.
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 Centrul Național de Politici și Evaluare în Educație Probă scrisă la informatică Testul 1 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 2021 Proba E. d) Informatică BAREM DE EVALUARE ȘI DE NOTARE (comun pentru limbajele C/C++ și Pascal) Testul 1 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 punctajului total acordat pentru lucrare la zece. • 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 3a 4d 5c 5x4p. SUBIECTUL al II - lea (40 de puncte) 1. a) Răspuns corect: -1 6p. b) Pentru răspuns corect 6p. Se acordă câte 2p. pentru fiecare dintre cele trei numere conform cerinței (oricare dintre numerele 7777, 7778, 7779, 7788, 7789, 7799, 7888, 7889, 7899, 7999). c) Pentru program corect -declarare variabile -citire date -afișare date -instrucțiuni de decizie (*) -instrucțiune repetitivă -atribuiri -corectitudine globală a programului1) 10p. 1p. 1p. 1p. 3p. 2p. 1p. 1p. (*) Se acordă numai 2p. dacă doar una dintre instrucțiunile de decizie 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. Răspuns corect: 149 167 347 6p. Se acordă câte 2p. pentru fiecare soluție conform cerinței. 3. Răspuns corect: 7 2020-2021 6p. Se acordă câte 2p. pentru fiecare aspect specific (rezultat al primei instrucțiuni de afișare, primele patru caractere din s2, ultimele 5 caractere din s2) conform cerinței. SUBIECTUL al III - lea (30 de puncte) 1. Pentru subprogram corect -antet subprogram (*) -determinare a valorilor cerute (**) -afișare a datelor (***) -declarare a tuturor variabilelor locale, corectitudine globală a subprogramului1) 10p. 2p. 4p. 3p. 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 specific (identificare a unui multiplu/divizor, valori suport) conform cerinței. (***) Se acordă numai 1p. dacă s-au afișat numerele cerute, dar nu în ordinea precizată. 2. Pentru program corect -declarare a unei variabile care să memoreze un tablou bidimensional -citire a datelor -determinare a valorilor cerute (*) -afișare a unor valori -declarare a variabilelor simple, corectitudine globală a programului1) 10p. 1p. 1p. 6p. 1p. 1p. (*) Se acordă câte 1p. pentru fiecare aspect specific (elemente de pe prima/ultima linie, elemente de pe prima/ultima coloană, elemente din colțurile cadrului preluate corect, ordine a parcurgerii pe linii, ordine a parcurgerii pe coloane, valori suport) conform cerinței.
Baremul · pagina 2
Ministerul Educației Centrul Național de Politici și Evaluare în Educație Probă scrisă la informatică Testul 1 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 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, inițial cu valori nule, în care ap[i]=1 dacă valoarea i apare în șirul aflat în fișier. Se completează vectorul pe măsura citirii datelor din fișier, având în vedere numerele de două cifre, apoi se parcurge de la dreapta la stânga, începând cu poziția 98, memorându-se primele două valori x și y, cu cifre distincte, pentru care ap[x]=ap[y]=0. 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.