Textul subiectului și baremului
Subiect BAC Informatică Mate-Info C/C++ 2016 – varianta 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 originalSubiectul · pagina 1
Ministerul Educaţiei Naționale și Cercetării Științifice Centrul Naţional de Evaluare şi Examinare Probă scrisă la informatică Varianta 4 Limbajul C/C++ Filiera teoretică, profilul real, specializările: matematică-informatică, matematică-informatică intensiv informatică Filiera vocaţională, profilul militar, specializarea matematică-informatică 1 Examenul de bacalaureat național 2016 Proba E. d) Informatică Limbajul C/C++ Varianta 4 Filiera teoretică, profilul real, specializările: matematică-informatică matematică-informatică intensiv informatică Filiera vocaţională, profilul militar, specializarea matematică-informatică • Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu. • Timpul de lucru efectiv este de 3 ore. • În rezolvările cerute, identificatorii utilizaţi 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ă). • În programele cerute, datele de intrare se consideră corecte, validarea acestora nefiind necesară. SUBIECTUL I (30 de puncte) Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect. 1. Variabilele x, y și z sunt de tip întreg și memorează numere naturale din intervalul [1,103]. Indicați o expresie C/C++ care are valoarea 1 dacă și numai dacă valoarea variabilei x este strict mai mare decât valoarea oricăreia dintre variabilele y și z. (4p.) a. x*y>y*z && x*z>y*z b. x*z>x*y && y*z>y*x c. y*z>x*z && y*x>z*x d. y*z>y*x && y*z>z*x 2. Se consideră algoritmul alăturat, 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) k1 m1 ┌cât timp n>9 execută │┌dacă n%10=[n/10]%10 atunci ││ kk+1 ││┌dacă k>m atunci │││ mk ││└■ ││altfel ││ k1 │└■ │ n[n/10] └■ scrie m a) Scrieţi valoarea afişată în urma executării algoritmului dacă se citeşte numărul 81112337. (6p.) b) Scrieţi numărul de valori din intervalul [10000,99999] care să înceapă cu cifra 1, care pot fi citite pentru variabila n, astfel încât, în urma executării algoritmului, pentru fiecare dintre acestea, să se afişeze valoarea 4. (4p.) c) Scrieţi în pseudocod un algoritm echivalent cu cel dat, înlocuind structura cât timp...execută cu o structură repetitivă de alt tip. (6p.) d) Scrieţi programul C/C++ corespunzător algoritmului dat. (10p.)
Subiectul · pagina 2
Ministerul Educaţiei Naționale și Cercetării Științifice
Centrul Naţional de Evaluare şi Examinare
Probă scrisă la informatică Varianta 4
Limbajul C/C++
Filiera teoretică, profilul real, specializările: matematică-informatică, matematică-informatică intensiv informatică
Filiera vocaţională, profilul militar, specializarea matematică-informatică
2
SUBIECTUL al II-lea (30 de puncte)
Pentru fiecare dintre itemii 1 şi 2 scrieţi pe foaia de examen litera corespunzătoare
răspunsului corect.
1. Variabilele i şi j sunt de tip întreg, iar variabila m memorează un tablou bidimensional cu 5
linii şi 5 coloane, numerotate de la 0 la 4, cu elemente numere întregi.
O expresie C/C++ a cărei valoare este egală cu produsul dintre primul element de pe linia i
și ultimul element de pe coloana j din acest tablou este: (4p.)
a. m[0,i]*m[j,4] b. m(0,i)*m(j,4)
c. m(i)(0)*m(4)(j) d. m[i][0]*m[4][j]
2. Un graf orientat are 12 arce, 3 componente tare conexe, iar fiecare vârf al său are gradul
interior un număr nenul. Numărul maxim de noduri pe care le poate avea graful este: (4p.)
a. 12 b. 11 c. 9 d. 8
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
3. Un arbore cu 8 noduri, numerotate de la 1 la 8, este reprezentat prin următorul vector de
„taţi” (3, 0, 2, 5, 2, 5, 1, 5). Determinați cel mai lung lanţ elementar care are o extremitate
în rădăcină și enumerați nodurile sale, în ordinea apariției în acesta. (6p.)
4. Variabilele i și s sunt întregi, iar variabila p
memorează, pentru fiecare dintre cele 20 de
zone de parcare ale unui oraș, numărul de
locuri închiriate pe parcursul orei curente,
precum și prețul practicat de zona respectivă
pentru închirierea unui loc pentru o oră.
struct parcare
{ int nrLocuriInchiriate;
int pretOra;
} p[20];
Fără a utiliza alte variabile decât cele menționate, scrieți o secvență de instrucțiuni în urma
executării căreia variabila s să memoreze suma totală obținută în urma închirierii locurilor
de parcare din oraș pe parcursul orei curente. (6p.)
5. Scrieţi un program C/C++ care citeşte de la tastatură, în această ordine, un număr natural
n, apoi n cuvinte, separate prin Enter, urmate de un număr natural k. Numerele citite sunt
din intervalul [1,20], iar fiecare cuvânt este format din cel mult 20 de caractere, numai
litere mici ale alfabetului englez. Cel puţin unul dintre cuvinte are k litere. Programul
construiește în memorie, apoi afișează pe ecran, un șir care să cuprindă cuvintele citite,
separate prin câte un spațiu, astfel încât toate cele care au k litere să ocupe primele poziţii,
iar celelalte să se regăsească în continuarea acestora, într-o ordine oarecare.
Exemplu: dacă se citesc, în această ordine, datele alăturate, unul dintre
șirurile obținute poate fi:
am un de cires mai
(10p.)
5
am
un
cires
de
mai
2Subiectul · pagina 3
Ministerul Educaţiei Naționale și Cercetării Științifice
Centrul Naţional de Evaluare şi Examinare
Probă scrisă la informatică Varianta 4
Limbajul C/C++
Filiera teoretică, profilul real, specializările: matematică-informatică, matematică-informatică intensiv informatică
Filiera vocaţională, profilul militar, specializarea matematică-informatică
3
SUBIECTUL al III-lea (30 de puncte)
Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.
1. Subprogramul f este definit alăturat.
Indicați cea mai mare valoare din
intervalul [20,25] pe care o poate
avea variabila întreagă x, astfel încât,
în urma apelului de mai jos, să se
afișeze numerele 2 4 16.
f(x,1); (4p.)
void f(int n, int p)
{ if(n>0)
{ if(n%2==1)
cout<<p<<" "; | printf(" ",p);
f(n/2, p*2);
}
}
a. 21 b. 22 c. 23 d. 24
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
2. Utilizând metoda backtracking se generează, în ordine lexicografică, toate şirurile de câte 6
cifre din mulţimea {0,1} cu proprietatea că au cel mult două cifre cu valori egale pe poziţii
consecutive. Primele 5 soluții generate sunt, în această ordine: 001001, 001010, 001011,
001100, 001101. Scrieți a 7-a și a 8-a soluție, în ordinea generării acestora. (6p.)
3. Subprogramul minDivPrim are un singur parametru, n, prin care primeşte un număr
natural (n∈∈∈∈[2,109]). Subprogramul returnează cel mai mic număr natural care are
aceiași divizori primi ca n.
Scrieţi definiţia completă a subprogramului.
Exemplu: dacă n=75, subprogramul returnează numărul 15, iar dacă n=7, subprogramul
returnează numărul 7. (10p.)
4. Se consideră șirul 1, -1, 2 ... definit astfel: f1=1, f2=-1, iar fn=1-2·fn-1-fn-2, dacă
n≥3 (unde n este un număr natural).
Se citește de la tastatură un număr natural, n (n∈∈∈∈[1,109]), și se cere să se scrie în
fișierul text bac.out, separați prin câte un spațiu, primii n termeni ai șirului, în ordine
inversă apariției lor în acesta.
Pentru determinarea și afișarea numerelor cerute se utilizează un algoritm eficient din
punctul de vedere al spațiului de memorie și al timpului de executare.
Exemplu: dacă n=3, fişierul conţine valorile
2 -1 1
a) Descrieţi în limbaj natural algoritmul utilizat, justificând eficienţa acestuia. (4p.)
b) Scrieţi programul C/C++ corespunzător algoritmului descris. (6p.)Baremul
Deschide PDF-ul originalBaremul · pagina 1
Ministerul Educaţiei Naționale și Cercetării Științifice Centrul Naţional de Evaluare şi Examinare Probă scrisă la informatică Varianta 4 Filiera teoretică, profilul real, specializările: matematică-informatică, matematică-informatică intensiv informatică Filiera vocaţională, profilul militar, specializarea matematică-informatică Barem de evaluare şi de notare 1 Examenul de bacalaureat naţional 2016 Proba E. d) Informatică Barem de evaluare și de notare (comun pentru limbajele C/C++ şi Pascal) Varianta 4 Filiera teoretică, profilul real, specializările: matematică-informatică matematică-informatică intensiv informatică Filiera vocaţională, profilul militar, specializarea 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. • Se vor lua în considerare atât implementările concepute pentru compilatoare pe 16 biţi, cât şi cele pentru compilatoare pe 32 de biţi. SUBIECTUL I (30 de puncte) 1. a 4p. 2. a) Răspuns corect: 3 6p. b) Răspuns corect: 18 4p. c) 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. d) Pentru program corect -declarare variabile -citire date -afişare date -instrucţiuni de decizie conform cerinței (*) -instrucţiune repetitivă conform cerinței -atribuiri corecte -corectitudine globală a programului1) 10p. 1p. 1p. 1p. 3p. 2p. 1p. 1p. (*) Se acordă numai 2p. dacă doar una dintre instrucțiuni este conform cerinței. SUBIECTUL al II - lea (30 de puncte) 1. d 4p. 2. a 4p. 3. Pentru rezolvare corectă -enumerare a nodurilor unui lanț -parametri pentru lanț (*) 6p. 2p. 4p. Se acordă câte 2p. pentru fiecare parametru conform cerinței (lanț elementar, lungime maximă).
Baremul · pagina 2
Ministerul Educaţiei Naționale și Cercetării Științifice Centrul Naţional de Evaluare şi Examinare Probă scrisă la informatică Varianta 4 Filiera teoretică, profilul real, specializările: matematică-informatică, matematică-informatică intensiv informatică Filiera vocaţională, profilul militar, specializarea matematică-informatică Barem de evaluare şi de notare 2 4. Pentru rezolvare corectă -acces la câmpurile unui element al tabloului (*) -determinare a sumei cerute (**) 6p. 3p. 3p. (*) Se acordă numai 1p. dacă s-a utilizat operatorul de selecție al unui câmp, dar nu conform cerinței. (**) Se acordă numai 1p. dacă algoritmul de calcul al unei sume este principial corect, dar nu conduce la rezultatul cerut. 5. Pentru program corect -declarare corectă a unei variabile care să memoreze mai multe cuvinte -citire a datelor -determinare a șirului cerut (*) -afişare a datelor în formatul cerut -declarare a variabilelor simple, corectitudine globală a programului1) 10p. 1p. 1p. 6p. 1p. 1p. (*) Se acordă câte 2p. pentru fiecare aspect al cerinței (plasare a cuvintelor de lungime k conform cerinței, plasare a cuvintelor de lungime diferită de k conform cerinței, construire șir în memorie). SUBIECTUL al III - lea (30 de puncte) 1. b 4p. 2. Răspuns corect: 010011 010100 6p. Se acordă câte 3p. pentru fiecare aspect al cerinței (conținut prima soluție, conținut a doua soluție, ordinea soluțiilor). 3. Pentru subprogram corect -structură antet principial corectă -declarare corectă a parametrului -determinare a numărului cerut (*) -returnare a rezultatului -declarare a tuturor variabilelor locale, corectitudine globală a subprogramului1) 10p. 1p. 1p. 6p. 1p. 1p. (*) Se acordă numai 3p. dacă s-a determinat un număr cu aceiași divizori primi, dar nu este cel mai mic. 4. a) Pentru răspuns corect -coerenţă a descrierii metodei (*) -justificare a unor elemente de eficienţă (**) 4p. 2p. 2x1p. (*) Se acordă punctajul chiar dacă metoda aleasă nu este eficientă. (**) Se acordă punctajul pentru elementele de eficiență justificate, conform cerinței, chiar dacă metoda aleasă nu este optimă. b) Pentru program corect -operaţii cu fişiere: declarare, pregătire în vederea scrierii, scriere în fişier -citire date, determinare și afișare a valorilor cerute (*, **) -utilizare a unui algoritm eficient (***) 6p. 1p. 4p. 1p. (*) Se acordă punctajul chiar dacă soluţia propusă nu prezintă elemente de eficienţă. (**) Se acordă numai 2p. pentru un algoritm principial corect, dar care nu conduce la rezultatul cerut. (***) Se acordă punctajul numai pentru un algoritm liniar (de complexitate O(n)), care utilizează eficient memoria. O soluţie posibilă se bazează pe forma generală a unui termen: fi=(i+1)/2, dacă i este impar, respectiv fi=-i/2, dacă i este par. 1) Corectitudinea globală vizează structura, sintaxa, alte aspecte neprecizate în barem.