Textul subiectului și baremului
Subiect BAC Informatică Mate-Info C/C++ 2018 – sesiunea specială, 23 mai 2018, varianta 9
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 Centrul Naţional de Evaluare şi Examinare Probă scrisă la informatică Varianta 9 Limbajul C/C++ Filiera teoretică, profilul real, specializările: matematică-informatică, matematică-informatică intensiv informatică Filiera vocaţională, profilul militar, specializarea matematică-informatică 1 din 3 Examenul de bacalaureat naţional 2018 Proba E. d) Informatică Limbajul C/C++ Varianta 9 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. Variabila x este de tip întreg. Indicați o expresie care are valoarea 1 dacă și numai dacă expresia C/C++ alăturată are valoarea 1. (4p.) x<=3 || x>10 a. !(x<3 && x<10) b. x>=3 && !(x>=10) c. !(x<3 || x<=10) d. !(x>3) || !(x<=10) 2. 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 [a] partea întreagă a numărului real a. citeşte n,a (numere naturale nenule) nr0 i1 ┌cât timp i≤n execută | citeşte b | (număr natural nenul) | c0 │┌cât timp b%2=0 execută ││ b[b/2] || cc+1 │└■ │┌dacă c=a atunci ││ nrnr+1 │└■ │ ii+1 └■ scrie nr a) Scrieţi valoarea afişată dacă se citesc, în această ordine, numerele 5, 3, 9, 206, 200, 80, 24. (6p.) b) Dacă pentru variabila n se citeşte numărul 4, iar pentru variabila a se citeşte numărul 2, scrieţi un set de numere distincte din intervalul [10,99] care pot fi citite în continuare astfel încât, în urma executării algoritmului, să se afișeze valoarea 4. (4p.) c) Scrieţi în pseudocod un algoritm echivalent cu cel dat, înlocuind adecvat prima structură cât timp...execută cu o structură de tip pentru...execută. (6p.) d) Scrieţi programul C/C++ corespunzător algoritmului dat. (10p.)
Subiectul · pagina 2
Ministerul Educaţiei Naționale
Centrul Naţional de Evaluare şi Examinare
Probă scrisă la informatică Varianta 9
Limbajul C/C++
Filiera teoretică, profilul real, specializările: matematică-informatică, matematică-informatică intensiv informatică
Filiera vocaţională, profilul militar, specializarea matematică-informatică
2 din 3
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. Un arbore cu 9 noduri, numerotate de la 1 la 9, este reprezentat prin vectorul de „taţi”
(3, 3, 0, 5, 2, 5, 2, 5, 8). Descendenții direcți (“fii”) ai nodului cu eticheta 5 sunt: (4p.)
a. 2 7 b. 2 8 c. 3 3 0 d. 4 6 8
2. Numărul de noduri ale unui graf neorientat fără cicluri, cu 26 de muchii și 12 componente
conexe este: (4p.)
a. 18 b. 28 c. 38 d. 48
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
3. Variabila d, declarată alăturat, memorează în câmpul mic
cel mai mic divizor, strict mai mare decât 1, al numărului
natural din intervalul [2,102], memorat în câmpul nr.
struct divizor
{ int nr, mic;
} d;
Scrieţi o secvență de instrucțiuni în urma executării căreia, pentru numărul memorat în
câmpul nr al variabilei d, se afișează pe ecran mesajul prim, dacă numărul este prim,
mesajul patrat dacă numărul este pătratul unui număr prim, sau două numere naturale,
separate printr-un spațiu, reprezentând cel mai mic și cel mai mare dintre divizorii proprii
pozitivi ai săi. Divizorii proprii pozitivi ai unui număr sunt divizori pozitivi diferiţi de 1 şi de el
însuşi.
Exemplu: dacă în câmpul nr se memorează numărul 12, iar în câmpul mic se
memorează numărul 2, se afișează pe ecran
2 6
iar dacă în câmpul nr se memorează numărul 9, iar în câmpul mic se memorează numărul
3, se afișează pe ecran mesajul
patrat (6p.)
4. Variabilele i şi j sunt de tip întreg, iar variabila a memorează
un tablou bidimensional cu 9 linii şi 9 coloane, numerotate de
la 1 la 9, având iniţial toate elementele nule.
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 a să memoreze tabloul
alăturat.
for(i=1;i<=9;i++)
for(j=1;j<=9;j++)
.................. (6p.)
1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 2
1 2 3 3 3 3 3 3 3
1 2 3 4 4 4 4 4 4
1 2 3 4 5 5 5 5 5
1 2 3 4 5 6 6 6 6
1 2 3 4 5 6 7 7 7
1 2 3 4 5 6 7 8 8
1 2 3 4 5 6 7 8 9
5. Un text are cel mult 100 de caractere și este format din cuvinte, numere naturale şi spaţii.
Cuvintele sunt formate numai din litere mici ale alfabetului englez. Cuvintele şi numerele
sunt separate prin câte un spaţiu, ca în exemplu.
Scrieţi un program C/C++ care citeşte de la tastatură un text de tipul menţionat mai sus şi
afişează pe ecran numărul din text care începe cu cea mai mare cifră, ca în exemplu. Dacă
există mai multe astfel de numere, se afișează doar unul dintre acestea, iar dacă textul nu
conține niciun număr, se afișează pe ecran mesajul nu exista.
Exemplu: pentru textul
am 190 de nuci si 70 de castane
se afişează
70 (10p.)Subiectul · pagina 3
Ministerul Educaţiei Naționale
Centrul Naţional de Evaluare şi Examinare
Probă scrisă la informatică Varianta 9
Limbajul C/C++
Filiera teoretică, profilul real, specializările: matematică-informatică, matematică-informatică intensiv informatică
Filiera vocaţională, profilul militar, specializarea matematică-informatică
3 din 3
SUBIECTUL al III-lea (30 de puncte)
Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.
1. Subprogramele f1 şi f2 sunt definite mai jos.
int f1 (int x, int y)
{ if(x%2!=0 || y%2!=0)return 1;
else return 2*f1(x/2,y/2);
}
int f2 (int x, int y)
{ if (x==y) return x;
else
if(x>y) return f2(x-y,y);
else return f2(x, y-x);
}
Cel mai mare divizor comun al lui 30 și 50 se obține în urma apelului: (4p.)
a. f1(30,50) b. f2(30,50) c. f1(30/2,50) d. f2(30/2,50)
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
2. Utilizând metoda backtracking, se generează toate posibilitățile de a forma cutii cu
bomboane de tipuri distincte din mulțimea {fondante, caramele, dropsuri, acadele}.
Într-o cutie sunt cel puțin două tipuri de bomboane, dar nu pot fi și dropsuri și acadele
simultan. Două cutii sunt distincte dacă ele conțin cel puțin un tip diferit de bomboane.
Primele patru soluţii generate sunt, în această ordine, (fondante, caramele),
(fondante, caramele, dropsuri), (fondante, caramele, acadele), (fondante,
dropsuri). Scrieţi a cincea și a șasea soluție, în ordinea generării acestora. (6p.)
3. Un număr natural este numit echilibrat dacă suma cifrelor sale de pe poziții pare este un
număr par, iar suma cifrelor sale de pe poziţii impare este un număr impar. Pozițiile cifrelor
sunt numerotate de la dreapta la stânga, astfel: cifra unităților este pe poziția 0, cifra zecilor
este pe poziția 1 ș.a.m.d.
Subprogramul echilibrat are un singur parametru, n, prin care primeşte un număr
natural (n∈∈∈∈[10,109]). Subprogramul returnează valoarea 1 dacă n este echilibrat sau
valoarea 0 în caz contrar.
Scrieţi definiţia completă a subprogramului.
Exemplu: dacă n=25163912, subprogramul returnează valoarea 1, iar dacă n=11211,
subprogramul returnează valoarea 0. (10p.)
4. Numim secvență încadrată a unui șir de numere naturale un subșir al acestuia, format din
termeni aflați pe poziții consecutive în șirul dat, subșir care începe și se termină cu aceeași
valoare. Lungimea secvenței este egală cu numărul de termeni ai acesteia.
Fișierul bac.txt conține un șir de cel puțin două și cel mult 106 numere naturale din
intervalul [0, 9]. Numerele sunt separate prin câte un spațiu. În șir există cel puțin doi
termeni egali.
Se cere să se determine secvențele încadrate din acest șir care au lungime maximă și să
se afișeze pe prima linie a ecranului lungimea maximă determinată, iar pe următoarea
linie, pentru fiecare astfel de secvenţă, valoarea primului său termen. Numerele de pe a
doua linie sunt afişate în ordine strict crescătoare, separate prin câte un spaţiu.
Proiectați un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dacă fişierul bac.txt conţine numerele
3 1 5 2 4 5 5 2 5 9 5 7 4 6 8 0 8
atunci pe ecran se afișează valorile:
9
4 5
a) Descrieţi în limbaj natural algoritmul proiectat, justificând eficienţa acestuia. (2p.)
b) Scrieţi programul C/C++ corespunzător algoritmului descris. (8p.)Baremul
Deschide PDF-ul originalBaremul · pagina 1
Ministerul Educaţiei Naționale Centrul Naţional de Evaluare şi Examinare Probă scrisă la informatică Varianta 9 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 din 2 Examenul de bacalaureat naţional 2018 Proba E. d) Informatică Barem de evaluare și de notare (comun pentru limbajele C/C++ şi Pascal) Varianta 9 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. d 4p. 2. a) Răspuns corect: 2 6p. b) Pentru răspuns corect 4p. Se acordă câte 1p. pentru fiecare dintre cele patru numere din intervalul cerut, valori de forma 4·k, unde k este număr impar. 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ă de tipul indicat, 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 a tuturor variabilelor -citire conform cerinței -afişare conform cerinței -instrucţiune de decizie conform cerinței -instrucţiuni repetitive conform cerinței (*) -atribuiri conform cerinței -corectitudine globală a programului1) 10p. 1p. 1p. 1p. 2p. 3p. 1p. 1p. (*) Se acordă numai 2p. dacă doar una dintre instrucţiuni este corectă. SUBIECTUL al II - lea (30 de puncte) 1. d 4p. 2. c 4p. 3. Pentru rezolvare corectă -acces la câmpul unei înregistrări -determinare și afișare a divizorului cerut -tratare a cazului prim -tratare a cazului patrat -corectitudine globală a secvenţei1) 6p. 1p. 2p. 1p. 1p. 1p.
Baremul · pagina 2
Ministerul Educaţiei Naționale Centrul Naţional de Evaluare şi Examinare Probă scrisă la informatică Varianta 9 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 din 2 4. Pentru rezolvare corectă 6p. Se acordă câte 2p. pentru atribuirea valorilor indicate elementelor din fiecare zonă specifică a tabloului (diagonala principală, sub diagonala principală, deasupra diagonalei principale). 5. Pentru program corect -declarare a unei variabile care să memoreze un șir de caractere -citire a şirului -determinare a numărului cerut (*) -afișare date și tratare a cazului nu exista -declarare variabile simple, corectitudine globală a programului1) 10p. 1p. 1p. 6p. 1p. 1p. (*) Se acordă câte 2p. pentru fiecare aspect al cerinţei (identificare cuvânt/număr din şir, comparare numere în funcție de prima cifră/lexicografic, algoritm principial corect de determinare a unei valori maxime). SUBIECTUL al III - lea (30 de puncte) 1. b 4p. 2. Răspuns corect: (fondante, acadele) (caramele, dropsuri) 6p. Se acordă câte 2p. pentru fiecare aspect al cerinţei (prima soluţie scrisă, a doua soluţie scrisă, ordinea soluţiilor) 3. Pentru subprogram corect -structură antet principial corectă pentru un subprogram de tipul cerut -declarare a parametrului -verificare a proprietății cerute (*) -returnare a rezultatului -declarare a tuturor variabilelor locale, corectitudine globală a subprogramului1) 10p. 1p. 1p. 6p. 1p. 1p. (*) Se acordă câte 1p. pentru fiecare aspect al cerinței (identificare a unei cifre a unui număr, identificare a poziției unei cifre, algoritm principial corect pentru determinarea unei sume, cifre suport pentru cele două sume, paritate poziții, paritate sume). 4. a) Pentru răspuns corect -coerenţă a explicării metodei (*) -justificare a unor elemente de eficienţă, conform cerinței 2p. 1p. 1p. (*) Se acordă punctajul chiar dacă metoda aleasă nu este eficientă. 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 (***) -afișare a datelor conform cerinţei, declarare a tuturor variabilelor, corectitudine globală a programului1) 8p. 1p. 5p. 1p. 1p. (*) Se acordă punctajul chiar dacă soluţia propusă nu prezintă elemente de eficienţă. (**) 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. O soluţie posibilă utilizează doi vectori de apariții, p și u, în care pentru fiecare valoare i citită din fișier se actualizează pi, prima poziție pe care este întâlnită valoarea i, respectiv ui, ultima poziție pe care este întâlnită valoarea i. Numerele cerute corespund valorilor i pentru care ui–pi+1 are valoare maximă. 1) Corectitudinea globală vizează structura, sintaxa, alte aspecte neprecizate în barem.