Înapoi la fișa subiectului

Textul subiectului și baremului

Test de antrenament BAC Informatică Mate-Info C/C++ 2021 – testul 4

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 original

Subiectul · pagina 1

Ministerul Educaţiei
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la INFORMATICĂ Testul 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
Examenul național de bacalaureat 2021
Proba E. d)
INFORMATICĂ
Limbajul C/C++
Testul 4
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. Variabilele x și y sunt de tip întreg, x memorând valoarea 8, iar y valoarea 6. Indicați expresia C/C++
care are valoarea 0.
a. 3*x-4*y==0 b. (x+y)/2 > x%y+1
c. !(x/2+2==y) d. x-y+3!=0
2. Subprogramul f este definit alăturat.
Indicați valoarea f(38627).
int f(int n)
{ int c;
if (n==0) return 9;
c=f(n/10); if (n%10<c) return n%10;
return c;
}
a. 2 b. 3 c. 7 d. 8
3. Utilizând metoda backtracking se generează, în ordine crescătoare, toate numerele de câte 5 cifre,
toate din mulțimea {1,2} cu proprietatea că nu există mai mult de două cifre 1 pe poziţii consecutive.
Primele 5 soluţii generate sunt, în această ordine: 11211, 11212, 11221, 11222, 12112. Indicaţi cea
de a 8-a soluţie generată.
a. 12122 b. 12211 c. 12212 d. 12221
4. Un arbore are 10 noduri, numerotate de la 1 la 10, și muchiile [1,2], [1,3], [1,5],
[1,6], [2,8], [2,9], [3,4], [3,10], [4,7]. Indicați lungimea unui lanț elementar care are ca
extremități nodurile 6 și 7.
a. 1 b. 2 c. 3 d. 4
5. Indicați numărul grafurilor neorientate, distincte, cu 5 noduri, care se pot construi. Două grafuri sunt
distincte dacă matricele lor de adiacență sunt diferite.
a. 54 b. 52 c. 210 d. 410
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, k
(numere naturale)
p1
┌cât timp n>0 execută
│ cn%10
│┌dacă k>0 atunci
││ ┌dacă c%2=1 atunci
││ │ pp*c
││ └■
│└■
│ n[n/10]; kk-1
└■
scrie p
a. Scrieţi valoarea care se afişează în urma executării algoritmului dacă se
citesc, în această ordine, numerele 296385 și 3. (6p.)
b. Dacă pentru k se citește numărul 4, scrieți cel mai mic și cel mai mare număr
din intervalul [104,105) care pot fi citite pentru n, astfel încât, pentru fiecare
dintre acestea, în urma executării algoritmului, să se afișeze 1. (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 cât timp...execută cu o structură repetitivă cu test final. (6p.)

Subiectul · pagina 2

Ministerul Educaţiei
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la INFORMATICĂ Testul 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
2. Variabila c memorează date despre o ciocolată: gramajul și data expirării. Știind că expresiile C/C++ de
mai jos au ca valori numere naturale reprezentând gramajul, respectiv data (ziua, luna și anul) expirării
produsului, scrieți definiția unei structuri cu eticheta ciocolata, care permite memorarea datelor
precizate pentru o ciocolată, și declarați corespunzător variabila c.
c.gramaj c.datae.zi c.datae.luna c.datae.an (6p.)
3. În secvenţa alăturată, variabila i este de tip
întreg, iar variabilele s și t pot memora
câte un şir cu cel mult 20 de caractere.
Scrieţi ce se afișează pe ecran în urma
executării secvenţei.
(6p.)
strcpy(s,"sanataTEA");
cout<<strlen(s); | printf("%d", strlen(s));
i=0;
while(i<strlen(s))
if(s[i]=='a')
{ strcpy(t, s+i+1); strcpy(s+i, t);}
else i=i+1;
cout<<s; | printf("%s",s);
SUBIECTUL al III-lea (30 de puncte)
1. Un joc online cu n jetoane poate fi jucat de un grup de k (k≥2) jucători, numai dacă toate cele n jetoane
pot fi distribuite în mod egal celor k jucători.
Subprogramul joc are un singur parametru, n, prin care primește un număr natural (n[2,104]),
reprezentând numărul de jetoane ale unui joc de tipul precizat. Subprogramul returnează numărul
valorilor distincte pe care le poate avea k pentru acest joc.
Scrieți definiția completă a subprogramului.
Exemplu: dacă n=12, atunci subprogramul returnează numărul 5 (cele 12 jetoane se pot distribui în
mod egal pentru o grupă de 2 jucători, de 3 jucători, de 4 jucători, de 6 jucători sau de 12 jucători).
(10p.)
2. Scrieţi un program C/C++ care citeşte de la tastatură numere naturale din intervalul [2,102]: m, n şi
elementele unui tablou bidimensional cu m linii şi n coloane. Programul afișează pe ecran, pentru fiecare
linie a sa, cea mai mare dintre valorile strict mai mici decât 21 memorate în aceasta, sau mesajul
nu exista, dacă nu există nicio astfel de valoare pe linia respectivă. Numerele, respectiv mesajele,
sunt afișate pe linii separate ale ecranului, în ordinea liniilor corespunzătoare din tablou.
Exemplu: pentru m=3, n=5 și tabloul alăturat se afişează pe ecran
16
nu exista
9 (10p.)
6 16 21 4 90
92 26 36 95 80
5 2 9 7 3
3. Fişierele bac1.txt și bac2.txt conţin numere naturale din intervalul [1,105]: fișierul bac1.txt
conține pe prima linie un număr n1, iar pe a doua linie un șir de n1 numere, iar fișierul bac2.txt
conține pe prima linie un număr n2, iar pe a doua linie un șir de n2 numere. Numerele aflate pe
aceeași linie a unui fișier sunt ordonate crescător și sunt separate prin câte un spațiu.
Se cere să se afișeze pe ecran, în ordine crescătoare, separate prin câte un spațiu, numerele divizibile
cu 5 care se găsesc doar în unul dintre șirurile aflate în cele două fișiere. Dacă nu există niciun astfel de
număr, se afișează pe ecran mesajul nu exista. Proiectați un algoritm eficient din punctul de vedere
al memoriei utilizate şi al timpului de executare.
Exemplu: dacă fişierul
bac1.txt conţine numerele
7
1 2 3 4 7 20 60
iar fişierul bac2.txt
conţine numerele
9
3 5 7 8 9 10 12 20 24
pe ecran se afișează, în această ordine, numerele 5 10 60.
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 original

Baremul · pagina 1

Ministerul Educaţiei
Centrul Național de Politici și Evaluare în Educație
Probă scrisă la INFORMATICĂ Testul 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
Examenul național de bacalaureat 2021
Proba E. d)
INFORMATICĂ
BAREM DE EVALUARE ȘI DE NOTARE
(comun pentru limbajele C/C++ și Pascal)
Testul 4
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 2a 3b 4d 5c 5x4p.
SUBIECTUL al II - lea (40 de puncte)
1. a) Răspuns corect: 15 6p.
b) Răspuns corect: 10000, 98888 6p. Se acordă câte 3p. pentru fiecare dintre cele două
numere.
c) Pentru program corect
-declarare a variabilelor
-citire a datelor
-afişare a datelor
-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 asupra
structurii repetitive, 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ă de structură repetitivă
conform cerinței (repetă...până când, execută...cât
timp, do...while, repeat...until 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 de date, câmp de tip structurat de
date, 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. Răspuns corect:
9sntTEA
6p. Se acordă câte 2p. pentru fiecare aspect specific al
datelor afișate (număr, litere mici suport, litere mari
suport) 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 specific
(algoritm de numărare principial corect, determinare a
unui divizor al unui număr, divizori 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 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
2. Pentru program corect
-declarare a unei variabile care să
memoreze un tablou bidimensional
-citire a datelor conform cerinței
-determinare a valorilor cerute (*)
-afişare a datelor în formatul cerut și
tratare a cazurilor nu exista
-declarare a variabilelor simple,
corectitudine globală a programului1)
10p.
1p.
1p.
6p.
1p.
1p.
(*) Se acordă câte 2p. pentru fiecare aspect specific
(algoritm principial corect de determinare a unei valori
maxime, valori strict mai mici decât 21, elemente
suport evaluate) 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ă interclasează șirurile din cele două
fișiere, afișând numai valorile cerute: cât timp există
valori în ambele șiruri, acestea se parcurg
memorându-se valoarea curentă din primul șir (fie
aceasta x1) și valoarea curentă din al doilea șir (fie
aceasta x2), care se compară la fiecare pas.
- dacă x1<x2, atunci se afișează x1 (doar dacă este
divizibil cu 5) și se citește următoarea valoare din
primul fișier;
- dacă x2<x1, atunci se afișează x2 (doar dacă este
divizibil cu 5) și se citește următoarea valoare din al
doilea fișier;
- dacă x1=x2, atunci nu se afișează nimic și se citește
următoarea valoare din ambele fișiere.
La final se parcurg termenii rămași în unul dintre șiruri
și se afișează doar valorile divizibile cu 5.
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
ș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.