Textul subiectului și baremului
Test de antrenament BAC Informatică Mate-Info C/C++ 2021 – testul 8
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 8
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 8
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 natural memorat în variabila
întreagă x are cel mult două cifre.
a. x/10==0 b. x%10==0 c. (x/10)/10==0 d. (x%10)%10==0
2. Se consideră subprogramele f și g definite mai jos.
int g(int x)
{ if (x>9) return (x/10 + x%10);
return x;
}
int f(int c)
{ if (c<1) return 1;
return g(c+f(c-1));
}
Indicați o mulțime de valori posibile pentru variabila întreagă a, astfel încât, pentru fiecare dintre
acestea, valoarea f(a) să fie egală cu 2.
a. {4,6} b. {7,9} c. {1,3,8} d. {1,4,7}
3. Utilizând metoda backtracking, se generează toate modalitățile de a pregăti o ținută, luând, într-o
anumită ordine, articolele din mulțimea {cămașă, cravată, pantaloni, pantofi, sacou, șosete},
având în vedere următoarele restricții: cămașa va fi luată înaintea cravatei, cravata înaintea sacoului și
atât șosetele, cât și pantalonii, înaintea pantofilor. Primele trei soluții generate sunt, în această ordine:
(cămașă, cravată, pantaloni, sacou, șosete, pantofi), (cămașă, cravată, pantaloni,
șosete, pantofi, sacou), (cămașă, cravată, pantaloni, șosete, sacou, pantofi). Indicați
numărul soluțiilor generate care au pe primele două poziții articolele cămașă, respectiv cravată.
a. 6 b. 8 c. 12 d. 24
4. Un arbore cu 9 noduri, numerotate de la 1 la 9, este reprezentat prin vectorul de „tați”
(5,3,0,1,3,3,8,3,1). Indicați un nod de tip “frate” cu nodul 6.
a. 1 b. 3 c. 5 d. 7
5. Matricea de adiacență a unui graf neorientat cu 2021 de noduri are 202 elemente nenule. Indicați
numărul minim de componente conexe ale grafului.
a. 2006 b. 2000 c. 1980 d. 1920Subiectul · pagina 2
Ministerul Educaţiei
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la INFORMATICĂ Testul 8
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.
citește n (număr natural)
x0
┌pentru i1,n execută
│ ┌dacă i%2=0 atunci
│ │ xx+i*i
│ │altfel
│ │ xx+(i+1)*(i+1)
│ └■
└■
scrie x
a. Scrieți valoarea afișată dacă se citește numărul 10. (6p.)
b. Scrieți cel mai mic și cel mai mare număr care pot fi citite, astfel
încât, pentru fiecare dintre acestea, în urma executării algoritmului
să afișeze o valoare din intervalul [100,999]. (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ă cu test inițial. (6p.)
2. Variabila p memorează simultan numărul de elevi dintr-o clasă (număr natural din intervalul [2,40]) și,
pentru fiecare elev al clasei, media de pe primul semestru precum și media de pe cel de-al doilea
semestru (numere reale cu cel mult două zecimale) la disciplina informatică. Știind că expresiile C/C++
de mai jos au ca valori numărul de elevi din clasă, respectiv mediile pe primul și pe al doilea semestru
pentru primul dintre elevii clasei, scrieți definiția unei structuri cu eticheta clasa, care permite
memorarea datelor despre elevii clasei, și declarați corespunzător variabila p.
p.numar p.elev[0].sem1 p.elev[0].sem2 (6p.)
3. Variabila i este de tip întreg, iar
variabilele s și aux permit
memorarea câte unui șir cu cel
mult 15 caractere. Scrieți ce se
afișează pe ecran în urma
executării secvenței de program
alăturate. (6p.)
strcpy(s,"voalata");
cout<<strlen(s); | printf("%d",strlen(s));
i=0;
while (i<strlen(s))
if (strchr("aeiou",s[i])!=NULL)
{ strcpy(aux,s+i+1);strcpy(s+i,aux); i=i+1; }
else i=i+2;
cout<<s; | printf("%s",s);
SUBIECTUL al III-lea (30 de puncte)
1. Subprogramul nrfp are doi parametri:
• n, prin care primește un număr natural (n[2,105]);
• m, prin care furnizează numărul din intervalul închis [2,n] care are cei mai mulți factori primi; dacă
există mai multe numere cu această proprietate, subprogramul îl returnează pe cel mai mare dintre ele.
Scrieți definiția completă a subprogramului.
Exemplu: dacă n=100 atunci, în urma apelului, m=90. (10p.)
2. Scrieți un program C/C++ care citește de la tastatură numărul natural n
(n[5,50]) și elementele unui tablou bidimensional cu n linii și n
coloane, numere naturale din intervalul [0,102]. Programul afișează pe
ecran suma numerelor din zona delimitată de cele două diagonale și
ultima coloană a tabloului, ca în exemplu.
Exemplu: pentru n=7 și tabloul alăturat, se afișează pe ecran 12.
(10p.)
1 2 3 4 5 5 6
7 8 9 0 3 1 2
4 6 8 0 1 1 3
8 6 3 6 2 4 7
5 7 9 2 2 5 8
1 4 7 0 5 3 6
9 2 5 8 5 9 1
3. Fișierul bac.txt conține un șir de cel mult 106 numere naturale din intervalul [0,109].
Se cere să se determine și să se afișeze pe ecran, separate printr-un spațiu, ultimele două numere
impare (nu neapărat distincte) din șirul aflat în fișier, sau mesajul nu exista, dacă nu există două
astfel de numere. Proiectați un algoritm eficient din punctul de vedere al memoriei utilizate și al timpului
de executare.
Exemplu: dacă fișierul conține valorile 122 1635 628 1413 1647 900 3001 4252
se afișează pe ecran 1647 3001
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 8 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 8 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) 1c 2d 3b 4c 5d 5x4p. SUBIECTUL al II - lea (40 de puncte) 1. a) Răspuns corect: 440 6p. b) Răspuns corect: 6 13 6p. Se acordă câte 3p. pentru fiecare dintre cele două numere conform cerinței c) Pentru program corect -declarare variabile -citire date -afișare date -instrucțiune de decizie -instrucțiune repetitivă -atribuiri -corectitudine globală a programului1) 10p. 1p. 1p. 1p. 2p. 3p. 1p. 1p. 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 structuri conform cerinței, principial corecte, dar nu este echivalent cu cel dat. Se va puncta orice formă 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 de date, câmp de tip structurat de date, etichetă/nume) conform cerinței. 3. Răspuns corect: 7volt 6p. Se acordă câte 2p. pentru fiecare aspect specific (lungime șir, vocală, consoane) conform cerinței. SUBIECTUL al III - lea (30 de puncte) 1. Pentru subprogram corect -antet al subprogramului (*) -determinare a valorii cerute (**) -declarare a tuturor variabilelor locale, corectitudine globală a subprogramului1) 10p. 3p. 6p. 1p. (*) Se acordă câte 1p. pentru fiecare aspect al antetului (structură, parametru de intrare, parametru de ieșire) conform cerinței. (**) Se acordă câte 1p. pentru fiecare aspect specific (algoritm de bază pentru numărarea unei serii de valori, determinare a unui divizor, factori primi suport numărați pentru un număr, algoritm de bază pentru determinarea unui maxim, număr cu cei mai mulți factori primi, tratare caz cu mai multe valori cu proprietatea cerută) conform cerinței.
Baremul · pagina 2
Ministerul Educaţiei Centrul Național de Politici și Evaluare în Educație Probă scrisă la INFORMATICĂ Testul 8 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 valorii cerute (*) -afișare a datelor -declarare a variabilelor simple, corectitudine globală a programului1) 10p. 1p. 1p. 6p. 1p. 1p. (*) Se acordă câte 2p. pentru fiecare aspect specific (identificare a unui element situat în zona indicată, algoritm de bază pentru însumarea unei serii de valori, valori suport însumate) 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 care utilizează eficient memoria. O soluție posibilă parcurge șirul din fișier, menținând în două variabile (inițial egale cu niște valori excepție) ultimele două valori impare citite, care se actualizează corespunzător la întâlnirea fiecărui număr impar. 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, 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.