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 originalSubiectul · 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. 15Subiectul · 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 originalBaremul · 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.