Textul subiectului și baremului
Test de antrenament BAC Informatică Mate-Info C/C++ 2021 – 12 martie 2021, testul 3
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 3
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 3
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. Indicați o expresie C/C++ care are valoarea 1 dacă și numai dacă numărul memorat în variabila
întreagă x aparține reuniunii de intervale [-21,-2][2,21].
a. x>=-21 && x<=-2 && x>=2 && x<=21
b. !(x<-21 || x>-2) || !(x<2 || x>21)
c. x>=-21 || x<=-2 || x>=2 || x<=21
d. !(x<-21 && x>21 && x>-2 || x<2)
2. Subprogramul f este definit alăturat. Indicați ce se
afișează în urma apelului de mai jos.
f(54321);
void f (int x)
{ cout<<"*"; | printf("*");
if(x>0)
{ cout<<x; | printf("%d",x);
f(x/100);
}
cout<<"/"; | printf("/");
}
a. ****554354321 b. ****/5/543/54321/
c. *54321*543*5*//// d. /5/543/54321/
3. Utilizând metoda backtracking, se generează toate modalitățile de a selecta un grup de patru muzee de
vizitat în București, dintre cele aflate în mulțimea {Muzeul de Artă Veche Apuseană (MAVA), Muzeul
Colecțiilor de Artă (MCA), Muzeul Căilor Ferate Române (MCFR), Muzeul Național al Hărților și Cărții
Vechi (MNHCV), Muzeul Național al Literaturii Române (MNLR), Muzeul Național Tehnic (MNT)}. Două
grupuri diferă prin cel puțin un muzeu. Primele cinci soluții generate sunt, în această ordine: (MAVA, MCA,
MCFR, MNHCV), (MAVA, MCA, MCFR, MNLR), (MAVA, MCA, MCFR, MNT), (MAVA, MCA, MNHCV, MNLR),
(MAVA, MCA, MNHCV, MNT). Indicați o enumerare care este generată ca soluție, în această ordine.
a. (MNHCV, MNLR, MCFR, MNT) b. (MCA, MNHCV, MNLR, MNT)
c. (MCA, MCFR, MNHCV, MNLR, MNT) d. (MAVA, MCA, MNHCV, MCFR)
4. Un graf neorientat cu 5 noduri este reprezentat prin matricea de adiacență
alăturată. Indicați numărul de muchii care pot fi eliminate, astfel încât graful parțial
obținut să fie arbore.
0 1 1 0 1
1 0 1 0 0
1 1 0 1 1
0 0 1 0 1
1 0 1 1 0
a. 3 b. 4 c. 5 d. 6
5. Un graf neorientat cu 7 noduri, numerotate de la 1 la 7, are mulțimea muchiilor {[2,3], [2,5], [2,6],
[3,6], [4,7], [5,1], [6,5]}. Indicați numărul de subgrafuri ale sale, pentru fiecare dintre acestea
mulțimea muchiilor fiind {[2,3], [2,6], [3,6]}.
a. 5 b. 6 c. 7 d. 8Subiectul · pagina 2
Ministerul Educaţiei
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la INFORMATICĂ Testul 3
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)
x0; m0; p1
┌cât timp x<10 execută
│ cnn
│┌cât timp cn≠0 execută
││ ccn%10; cn[cn/10]
││┌dacă c=x atunci
│││ mc*p+m; pp*10
││└■
│└■
│ xx+2
└■
scrie m
a. Scrieți ce se afișează dacă se citește numărul 250887. (6p.)
b. Scrieți două numere care pot fi citite astfel încât, pentru fiecare dintre
acestea, în urma executării algoritmului, să se afișeze valoarea citită.
(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
a doua structură repetitivă cu o structură repetitivă de alt tip. (6p.)
2. Variabila m memorează simultan numărul de exponate dintr-un muzeu (număr natural din intervalul
[3,102)) și date despre fiecare exponat (numele și colecția din care face parte, șiruri de cel mult 20 de
caractere). Expresiile C/C++ de mai jos au ca valori numărul de exponate, numele celui de al treilea
exponat, respectiv colecția din care face parte acesta. Scrieți definiția unei structuri cu eticheta muzeu,
care permite memorarea datelor despre un muzeu, și declarați corespunzător variabila m.
m.numar m.exponat[2].nume m.exponat[2].colectie (6p.)
3. Variabila s permite memorarea unui șir de cel mult 20 de caractere.
Scrieți ce se afișează
în urma executării
secvenței alăturate.
(6p.)
strcpy(s,"muzeu");
s[0]=s[0]+1;
cout<<s[1]<<s[0]<<endl; | printf("%c%c\n",s[1],s[0]);
strcpy(s,"muzeu"+2);
cout<<s; | printf("%s",s);
SUBIECTUL al III-lea (30 de puncte)
1. Subprogramul suma are un singur parametru, n, prin care primește un număr natural (n[1,106]).
Subprogramul returnează suma divizorilor pozitivi ai lui n care nu sunt primi.
Scrieți definiția completă a subprogramului.
Exemplu: pentru n=12 subprogramul returnează 23 (23=1+4+6+12). (10p.)
2. O sală de spectacole are mai multe rânduri de scaune, toate rândurile având același număr de locuri. O
persoană poate rezerva mai multe locuri, dar cel mult câte unul pe un rând. Configurația sălii este
memorată ca un tablou bidimensional, în care prima coloană corespunde primului rând de scaune, iar
ultima coloană corespunde ultimului rând de scaune. Locurile libere sunt notate cu 0, iar cele rezervate
sunt notate cu numere naturale nenule, astfel încât toate locurile rezervate de o persoană sunt notate
cu același număr, iar cele rezervate de persoane distincte sunt notate cu numere distincte.
Scrieți un program C/C++ care citește de la tastatură numerele naturale din intervalul [2,20], m și n, apoi m∙n
numere naturale din intervalul [0,400], elemente ale tabloului bidimensional cu m linii și n coloane,
reprezentând configurația sălii. Programul verifică dacă există persoane care au rezervat locuri atât pe primul,
cât și pe ultimul rând al sălii, și afișează pe ecran numerele cu care sunt notate aceste locuri, ca în exemplu.
Numerele sunt afișate într-o ordine oarecare, separate prin câte un spațiu, iar dacă nu există
astfel de locuri se afișează pe ecran mesajul nu exista.
Exemplu: pentru m=5, n=4 și tabloul alăturat se afișează pe ecran, nu neapărat în această
ordine, numerele 6 8 (10p.)
3 7 0 0
0 0 5 8
6 2 0 1
0 3 0 6
8 0 6 4
3. Două numere naturale sunt numite z-prietene dacă au aceeași cifră a zecilor.
Fișierul bac.in conține un șir de cel mult 106 numere naturale din intervalul [10,109], separate prin
câte un spațiu. Se cere să se afișeze pe ecran pozițiile din șir pe care se află termeni precedați de un
număr maxim de valori z-prietene cu ei. Numerele afișate sunt separate prin câte un spațiu. Proiectați
un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dacă fișierul conține numerele 726 358 98 157 20 49 128 879 659 271
pe ecran se afișează numerele 7 9 (termenii 128, respectiv 659 respectă proprietatea cerută).
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 3 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 3 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ț este acceptată dacă acest lucru nu afectează corectitudinea în funcționarea programului. SUBIECTUL I (20 de puncte) 1b 2c 3b 4a 5b 5x4p. SUBIECTUL al II - lea (40 de puncte) 1. a) Răspuns corect: 8820 6p. b) Pentru răspuns corect 6p. Se acordă câte 3p. pentru fiecare dintre cele două numere conform cerinței (oricare număr format numai din cifre pare, acestea fiind în ordine descrescătoare). c) Pentru program corect -declarare variabile -citire date -afișare date -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âmp de tip simplu, câmp de tip structurat, etichetă/nume) conform cerinței. 3. Răspuns corect: un zeu 6p. Se acordă câte 2p. pentru fiecare aspect specific (litere rezultate ale primei instrucțiuni de afișare, șir rezultat al celei de a doua instrucțiuni de afișare, scriere pe rânduri separate) conform cerinței. 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 (identificare a unui divizor, divizori suport, algoritm principial corect de însumare) conform cerinței.
Baremul · pagina 2
Ministerul Educaţiei Centrul Național de Politici și Evaluare în Educație Probă scrisă la INFORMATICĂ Testul 3 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 un tablou bidimensional -citire a datelor -determinare a datelor cerute (*) -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 specific (acces la un element, identificare a unui element situat pe prima coloană, identificare a unui element situat pe ultima coloană, algoritm principial corect de identificare a unui element comun celor două coloane, numere nenule, valori suport) 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. O soluție posibilă utilizează două tablouri nr și p, cu câte 10 elemente, inițial nule, în care nr[i] este numărul de valori din fișier care au cifra zecilor i, iar p[i] este poziția în șir a ultimului număr care are cifra zecilor i. Pe măsura citirii datelor din fișier se actualizează în mod corespunzător poziția curentă, precum și tablourile nr și p. Dacă max este valoarea maximă din tabloul nr, se vor afișa toate valorile p[i] pentru care nr[i]=max. 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.