• 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. Variabilele x și y sunt de tip real (x≠-2). Indicați o expresie C/C++ + + − corespunzătoare expresiei aritmetice alăturate. + a. (x+y/5+x-y/2)/x+2 b. (x+y)/5+(x-y)/2/(x+2) c. ((x+y)/5+(x-y)/2)/x+2 d. ((x+y)/5+(x-y)/2)/(x+2) 2. Subprogramul f este definit alăturat. Indicați int f(int n) valoarea lui f(1234). { if (n!=0) return (n%2)*(n%10)+f(n/10); return 0; } a. 0 b. 4 c. 6 d. 10 3. Utilizând metoda backtracking se generează toate numerele formate din cifre distincte, cifre a căror sumă să fie 6. Primele patru soluții generate sunt, în această ordine: 1023, 1032, 105 și 1203. Indicați cea de a șasea soluție generată. a. 1230 b. 132 c. 123 d. 15 4. Unui arbore cu 10 noduri i se adaugă o muchie, cu extremitățile în două dintre nodurile sale. Indicați numărul ciclurilor elementare pe care le conține graful obținut. a. 0 b. 1 c. 9 d. 10 5. Un graf neorientat are 21 de noduri, numerotate de la 1 la 21; pentru oricare două noduri distincte ale sale, numerotate cu i, respectiv cu j, există muchia [i,j] dacă și numai dacă ultima cifră a lui i este egală cu ultima cifră a lui j. Indicați numărul valorilor nule din matricea de adiacență a grafului. a. 2∙21-102 b. 212-11 c. 212-2∙12 d. 2∙212-13
SUBIECTUL al II-lea (40 de puncte)
1. Algoritmul alăturat este reprezentat în pseudocod. citește n,x,y S-a notat cu a%b restul împărțirii numărului natural a la (numere naturale nenule, x≤n, y≤n) numărul natural nenul b. ok0 a. Scrieți ce se afișează în urma executării algoritmului dacă ┌pentru i1,n execută se citesc, în această ordine, numerele 15, 3, 4. (6p.) │┌dacă (i%x=0 și i%y≠0) sau ││ (i%x≠0 și i%y=0) atunci b. Scrieți două seturi distincte de date de intrare, astfel încât, ││ scrie i, ' ' în urma executării algoritmului, pentru fiecare dintre acestea ││ ok1 să se afișeze valoarea 0. (6p.) │└■ c. Scrieți programul C/C++ corespunzător algoritmului dat. └■ (10p.) ┌dacă ok=0 atunci scrie 0 └■ d. Scrieți în pseudocod un algoritm echivalent cu cel dat, înlocuind structura pentru...execută cu o structură repetitivă cu test inițial. (6p.)
Probă scrisă la INFORMATICĂ Varianta 4
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 Ministerul Educației Naționale Centrul Național de Evaluare și Examinare
2. Variabila s poate memora un șir de cel strcpy(s,"ROMANIA");
mult 20 de caractere, variabila aux este i=strlen(s)-1; de tip char, iar celelalte variabile sunt de for(j=3;j>=0;j--) tip întreg. { aux=s[i]; s[i]=s[i-j]; s[i-j]=aux; Scrieți șirul memorat prin intermediul i=i-j; variabilei s în urma executării secvenței } alăturate. (6p.) 3. Variabila a memorează datele personale ale fiecăruia dintre cei 30 struct date de angajați (codul numeric personal – CNP, anul nașterii) și venitul { char CNP[14]; lunar al acestuia. Scrieți o secvență de instrucțiuni în urma int anNastere; executării căreia pentru primul angajat să se inițializeze anul }; nașterii cu valoarea 2000, iar venitul cu valoarea 4000. (6p.) struct angajat { struct date dp; int venit; }a[30];
SUBIECTUL al III-lea (30 de puncte)
1. Un număr natural n se numește cub perfect dacă există un număr natural b, astfel încât n=b3. Subprogramul cuburi are un singur parametru, n, prin care primește un număr natural (n∈[1,103]). Subprogramul afișează pe ecran, separate prin câte un spațiu, în ordine descrescătoare, primele n cuburi perfecte nenule. Scrieți definiția completă a subprogramului. Exemplu: dacă n=5 atunci, după apel, se afișează pe ecran numerele 125 64 27 8 1 (10p.) 2. Scrieți un program C/C++ care citește de la tastatură două numere naturale din intervalul [2,102], k și n, și construiește în memorie un tablou bidimensional cu n linii și n coloane, astfel încât parcurgând diagonala principală, de sus în jos, să se obțină un șir strict crescător format din primii n multipli naturali nenuli ai lui k și parcurgând fiecare linie a sa, de la stânga la dreapta, să se obțină câte un șir strict crescător de numere naturale consecutive. Programul afișează pe ecran tabloul obținut, fiecare linie a tabloului pe câte o linie a ecranului, elementele de pe aceeași linie fiind separate prin câte un spațiu. Exemplu: pentru k=3 și n=4 se obține tabloul de mai jos 3 4 5 6 5 6 7 8 7 8 9 10 9 10 11 12 (10p.) 3. Numim pereche asemenea (x,y) două numere naturale cu cel puțin două cifre, x și y, cu proprietatea că ultimele două cifre ale lui x sunt egale cu ultimele două cifre ale lui y, dispuse eventual în altă ordine. Fișierul numere.in conține numere naturale din intervalul [10,105]: pe prima linie două numere na și nb, pe a doua linie un șir A de na numere, iar pe a treia linie un șir B de nb numere. Numerele aflate pe aceeași linie a fișierului sunt separate prin câte un spațiu. Se cere să se afișeze pe ecran numărul de perechi asemenea (x,y), cu proprietatea că x este un termen al șirului A, iar y este un termen al șirului B. Proiectați un algoritm eficient din punctul de vedere al timpului de executare. Exemplu: dacă fișierul conține numerele 9 7 112 20 42 112 5013 824 10012 55 155 402 1024 321 521 57 6542 255 se afișează pe ecran numărul 13 deoarece sunt 13 perechi asemenea: (112,321), (112,521), (20,402), (42,1024), (42,6542), (112,321), (112,521), (824,1024), (824,6542), (10012,321), (10012,521), (55,255), (155,255). 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.)
Probă scrisă la INFORMATICĂ Varianta 4
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 Ministerul Educaţiei Centrul Național de Politici și Evaluare în Educație Examenul național de bacalaureat 2021 Proba E. d) 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ț (de exemplu tipuri întregi cu semn pentru memorarea numerelor naturale, dimensiune a tablourilor) este acceptată din punctul de vedere al corectitudinii programului, dacă acest lucru nu afectează funcționarea acestuia.
SUBIECTUL I (20 de puncte)
1d 2b 3a 4b 5c 5x4p.
SUBIECTUL al II - lea (40 de puncte)
1. a) Răspuns corect: 3 4 6 8 9 15 6p. Se acordă câte 1p. pentru fiecare număr conform cerinței. b) Pentru răspuns corect 6p. Se acordă câte 3p. pentru fiecare set de date conform cerinței (orice triplet de numere naturale nenule, n, x, y, unde x≤n și x=y). c) Pentru program corect 10p. (*) Se acordă numai 2p. dacă doar una dintre -declarare a variabilelor 1p. instrucțiunile de decizie este conform cerinței. -citire a datelor 1p. -afișare a datelor 1p. -instrucțiuni de decizie (*) 3p. -instrucțiune repetitivă 2p. -atribuiri 1p. -corectitudine globală a programului1) 1p. d) Pentru algoritm pseudocod corect 6p. (*) Se acordă punctajul chiar dacă algoritmul obținut -utilizare a unei structuri repetitive cu test nu este echivalent cu cel dat. inițial (*) 2p. Se va puncta orice formă de structură repetitivă -aspecte specifice ale secvenței obținute conform cerinței (cât timp...execută, while... do etc.). prin înlocuire, conform cerinței (**) 3p. (**) Se acordă câte 1p. pentru fiecare aspect -algoritm complet, corectitudine globală a (inițializare contor, expresie logică pentru test inițial, algoritmului1) 1p. actualizare contor) conform cerinței. 2. Răspuns corect 6p. Se acordă numai 1p. dacă doar ultimele 3 litere sunt ARMONIA conform cerinței, numai 3p. dacă doar ultimele 4 litere sunt conform cerinței, numai 5p. dacă doar ultimele 6 litere sunt conform cerinței. 3. Pentru răspuns corect 6p. -acces la un câmp de pe primul nivel al structurii 2p. -acces la un câmp de pe al doilea nivel al structurii 2p. -atribuire a valorilor indicate pentru datele angajatului precizat 1p. -corectitudine globală a secvenței1) 1p.
Probă scrisă la INFORMATICĂ Varianta 4
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 Ministerul Educaţiei Centrul Național de Politici și Evaluare în Educație SUBIECTUL al III - lea (30 de puncte) 1. Pentru subprogram corect 10p. (*) Se acordă câte 1p. pentru fiecare aspect al -antet subprogram (*) 2p. antetului (structură, parametru de intrare) conform -determinare a valorilor cerute (**) 4p. cerinței. -afișare a datelor (***) 3p. (**) Se acordă câte 2p. pentru fiecare aspect -declarare a tuturor variabilelor locale, (determinare/identificare a unui cub perfect, cuburi corectitudine globală a subprogramului1) 1p. perfecte suport determinate) conform cerinței. (***) Se acordă numai 1p. dacă valorile sunt afișate, dar nu în ordinea cerută. 2. Pentru program corect 10p. (*) Se acordă câte 1p. pentru fiecare aspect specific -declarare a unei variabile care să (identificare a poziției elementelor situate pe diagonala memoreze un tablou bidimensional 1p. principală, plasare pe linii a unor valori consecutive la -citire a datelor 1p. stânga diagonalei principale, plasare pe linii a unor -construire a tabloului conform cerinței (*) 6p. valori consecutive la dreapta diagonalei principale, -afișare a datelor 1p. multipli ai lui k suport pe diagonala principală, valori -declarare a variabilelor simple, suport plasate în afara diagonalei principale, corectitudine globală a programului1) 1p. construire în memorie) conform cerinței. 3. a) Pentru răspuns corect 2p. (*) Se acordă punctajul chiar dacă algoritmul ales nu -coerență a descrierii algoritmului (*) 1p. este eficient. -justificare a elementelor de eficiență 1p. (**) Se acordă numai 3p. dacă algoritmul este b) Pentru program corect 8p. principial corect, dar nu oferă rezultatul cerut pentru -operații cu fișiere: declarare, pregătire în toate seturile de date de intrare. vederea citirii, citire din fișier 1p. (***) Se acordă punctajul numai pentru un algoritm liniar. -determinare a valorii cerute (*),(**) 5p. O soluţie posibilă utilizează un vector de frecvență v în -utilizare a unui algoritm eficient (***) 1p. care vi reprezintă numărul de valori x din șirul A pentru -declarare a variabilelor, afișare a care i=x%100 (i∈[0,99]). Vectorul v se actualizează pe datelor, corectitudine globală a măsura parcurgerii celei de a doua linii a fișierului. Se programului1) 1p. determină numărul cerut nr pe măsura parcurgerii numerelor de pe a treia linie a fișierului: pentru fiecare număr curent y din șirul B se determină ultimele două cifre ale sale, c1 și c2 și numerele i și j, unde i=c1*10+c2, iar j=c2*10+c1, apoi se adună la nr valoarea vi și, dacă i≠j, se adună la nr și vj.
O altă soluție utilizează câte un vector de frecvență
pentru fiecare șir, va și vb, cu aceeași semnificație ca mai sus. Vectorii se completează pe măsura citirii fiecărui șir, iar numărul cerut se obține la final, prin parcurgerea vectorului vb și pentru fiecare i∈[0,99], se determină ultimele două cifre ale sale, c1 și c2 și numărul j, unde j=c2*10+c1, apoi se adună la nr valoarea vbi∙ vai și, dacă i≠j, se adună la nr și vbi∙ vaj. 1) Corectitudinea globală vizează structura, sintaxa, alte aspecte neprecizate în barem.
Probă scrisă la INFORMATICĂ Varianta 4
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