Ministerul Educa iei ✁ i Cercet✂ rii - Serviciul Na ional de Evaluare ✁ i Examinare
EXAMENUL DE BACALAUREAT – 2007
Proba scris la INFORMATIC
PROBA E, limbajul C/C++
Varianta 54
♦ Toate subiectele sunt obligatorii. Se acord 10 puncte din oficiu.
♦ Timpul efectiv de lucru este de 3 ore.
♦ În programele cerute la subiectele II i III, 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 ).
SUBIECTUL I (40 de puncte)
Pentru fiecare din itemii de la 1 la 8, scrie i pe foaia de examen litera corespunz toare
r spunsului corect. Fiecare r spuns corect se noteaz cu 5 puncte.
1. Ce se va afi✁ a dup✂ executarea urm✂ toarei secven e de instruc iuni:
char s[30]=”examen de bacalaureat”;
s[1]=’X’;
cout<<s; | printf(“%s”,s);
a. examen de bacalaureat
b. Examen de Bacalaureat
c. eXamen de bacalaureat
d. Xxamen de bacalaureat
2. Care este valoarea variabilei x dup✂ executarea urm✂toarei secven e de instruc iuni?
x=0;
for(i=1;i<=10;i++);
x=x+1;
a. 0 b. eroare de c. 10 d. 1
sintax☎
3. Utilizând metoda backtracking se genereaz✂ în ordine lexicografic✂ toate posibilit✂ ile de aranjare a
8 dame pe tabla de ✁ ah astfel încît acestea s✂ nu se atace. Fiecare solu ie se exprim✂ sub forma
unui vector c=(c1,c2,…,c8) unde ci reprezint✂ coloana pe care se afl✂ dama de pe linia i.✆ tiind
c✂ primele 2 solu ii generate sunt (1,5,8,6,3,7,2,4) ,(1,6,8,3,7,4,2,5) s✂ se determine solu ia generat✂
de algoritm imediat dup✂ solu ia (8,2,4,1,7,5,3,6).
a. (8,1,2,3,4,5,6,7) b. (8,4,2,7,6,1,3,5)
c. (8,2,5,3,1,7,4,6) d. (7,4,2,5,8,1,3,6)
4. Consider✂ m urm✂toarea declarare:
struct persoana{char nume[10],prenume[10];int varsta;} p;
Cum se poate accesa prima liter✂ a numelui unei persoane ale c✂ rei date de identificare sunt
memorate în variabila p ?
a. p->nume[1] b. p->nume c. [Link][0] d. [Link][1]
5. Fie G un graf orientat cu n noduri ✁ i m arce. Care este valoarea sumei gradelor exterioare ale tuturor
nodurilor grafului?
a. 2*m b. n+m c. n d. m
6. Se consider✂ subprogramul recursiv definit al✂turat. Ce void f(int i,int n)
se va afi✁ a în urma apelului f(1,3)? {if(i<=n)
{cout<<”*”; | printf(“*”);
f(i+1,n);
cout<<”#”; | printf(“#”);}
}
a. #*#*#* b. ###*** c. ***### d. *#*#*#
7. Se consider✂ un arbore cu r✂ dacin✂ având 10 noduri etichetate cu numere de la 1 la 10 dat prin
urm✂torul vector Tata=(3,3,0,3,2,2,5,5,4,6).Care sunt nodurile terminale ale arborelui?
a. 7 8 b. 9 10 c. 1 7 10 d. 1 7 8 9 10
8. Se consider✂ un graf neorientat cu 10 vârfuri numerotate de la 1 la 10, graf cu proprietatea c✂ exist✂
muchie între vârfurile i ✁ i j dac✂ ✁ i numai dac✂ numerele i ✁ i j sunt prime între [Link] este
suma gradelor vârfurilor acestui graf?
a. 20 b. 62 c. 50 d. 32
INFORMATIC✄, limbajul C/C++ 1 Varianta 54
Ministerul Educa iei ✁ i Cercet✂ rii - Serviciul Na ional de Evaluare ✁ i Examinare
SUBIECTUL II (20 de puncte)
Se consider programul pseudocod al turat. cite te a {num✂ r natural}
m 0
S-au folosit urm✂ toarele nota ii: mod pentru restul împ✂r irii ✁cât timp a<>0 execut☎
întregi ✁ i div pentru câtul împ✂ r irii întregi. ✂
✂ ✁d 0
1. Care este valoarea afi✁ at✂ de acest algoritm dac✂ ✂ ✂cât timp a mod 2=0 execut☎
✂ ✂ d d+1
se citesc urm✂ toarele valori: 2,15,78,3,0 (4p.)
✂ a a div 2
☎
2. Da i exemplu de un ✁ ir de 5 valori astfel încât s✂ se ✂ ✄
✁dac☎ d>m atunci
afi✁ eze valoarea 0. (4p.) ✂ ✂
✂ m d
☎
3. Rescrie i programul pseudocod dat, modificând un
✂ ✄
num✂ r minim de linii astfel încât programul ob inut cite te a {num✂ r natural }
☎
s✂ afi✁ eze num✂rul de valori impare citite. (4p.) ✄
scrie m
4. Scrie i programul C/C++ corespunz✂tor
algoritmului dat. (8p.)
SUBIECTUL III (30 de puncte)
Se citesc de la tastatur✂ 2 numere naturale nenule m,n (2<m,n<20). S✂ se scrie programul C/C++
1.
care construie✁ te în memorie o matrice A cu m linii (numerotate de la 1 la m) ✁ i n coloane(numerotate
de la 1 la n) cu proprietatea c✂ elementul A[i][j] este egal cel mai mare divizor comun dintre
numerele i ✁ i j . Matricea se va afi✁ a pe ecran, câte o linie a matricei pe câte o linie a ecranului,
elementele fiec✂rei linii fiind separate prin spa ii.
De exemplu pentru m=3 ✁ i n=4 se va afi✁ a matricea urm✂toare:
1 1 1 1
1 2 1 2
1 1 3 1 (10p.)
a)Se consider✂ urm✂toarele subprograme:elimin ✁ i ncif. Subprogramul elimin cu doi
2.
parametri prime✁ te prin intermediul parametrului n , un num✂ r întreg de maximum 9 cifre i
returneaz✂ prin intermediul celui de-al doilea parametru x, un num✂r ob inut din num✂rul n prin
eliminarea tuturor cifrelor [Link]✂ num✂rul n are toate cifrele pare atunci num✂ rul x va avea
valoarea 0. Subprogramul ncif, cu un parametru, prime✁ te prin intermediul parametrului n , un
num✂ r întreg de maximum 9 cifre ✁ i returneaz✂ num✂rul cifrelor lui n.
Scrie i numai antetele celor dou✂ subprograme. (4p.)
b) Folosind apeluri ale subprogramelor elim ✁ i ncif, s✂ se determine num✂ rul total al cifrelor pare
ce apar în scrierea tuturor valorilor naturale din intervalul închis determinat de numerele naturale a ✁ i
b citite de la tastatur✂ (1<a<1000 , 1<b<1000). Num✂ rul determinat se va afi✁ a pe ecran.
De exemplu, pentru a=8 ✁ i b=23, se va afi✁ a num✂ rul 12. (6p.)
3. Se cite✁te de la tastaur✂ un num✂r natural nenul n (n<1000). Scrie i programul C/C++ care
construie✁te fi✁ierul text [Link] care s✂ con in✂, pe prima linie, to i divizorii lui n în ordine strict
descresc✂toare. Divizorii vor fi separa i prin spa iu.
De exemplu, dac✂ n=10, atunci fi✁ierul [Link] va con ine:
10 5 2 1 (10p.)
INFORMATIC✄, limbajul C/C++ 2 Varianta 54
Ministerul Educa iei ✁ i Cercet✂ rii - Serviciul Na ional de Evaluare ✁ i Examinare
EXAMENUL DE BACALAUREAT – 2007
Proba scris la INFORMATIC
PROBA E, limbajul C/C++
Varianta 53
♦ Toate subiectele sunt obligatorii. Se acord 10 puncte din oficiu.
♦ Timpul efectiv de lucru este de 3 ore.
♦ În programele cerute la subiectele II i III, 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 ).
SUBIECTUL I (40 de puncte)
Pentru fiecare din itemii de la 1 la 8, scrie i pe foaia de examen litera corespunz toare
r spunsului corect. Fiecare r spuns corect se noteaz cu 5 puncte.
1. Se consider✂ un graf neorientat cu 10 vârfuri cu proprietatea c✂ exist✂ muchie de la vârful i la vârful
j dac✂ ✁ i numai dac✂ i ✁ i j sunt numere prime (num✂rul 1 se consider✂ c✂ nu este prim). Care
este num✂ rul muchiilor din acest graf?
a. 7 b. 6 c. 9 d. 12
2. Care este num✂rul minim de muchii ce trebuie eliminate astfel 0 1 1 1 1 0
încât graful neorientat cu 6 noduri ✁ i cu matricea de 1 0 0 1 1 1
adiacen ✂ al✂ turat✂ s✂ fie eulerian? 1 0 0 1 0 0
1 1 1 0 1 0
1 1 0 1 0 1
0 1 0 0 1 0
a. 4 b. 1 c. 0 d. 2
3. Se consider✂ urm✂ torul subprogram recursiv:
void p(int i,int n)
{int j;
if(i<=n)
{p(i+1,n);
for(j=1;j<=i;j++)
cout<<j; | printf(“%d”,j);
cout<<endl; | printf(“\n”);
}}
Ce se va afi✁ a în urma apelului p(1,3)?
a. 123 b. 123 c. 321 d. 1
23 12 32 12
3 1 3 123
4. Câte numere de 10 cifre pot fi ob inute utilizând numai cifrele 0 i 9?
✁
a. 210 b. 29 c. 9 d. 10
5. Care este num✂ rul grafurilor orientate cu n noduri cu proprietatea c✂ pentru orice pereche de noduri
distincte i ✁ i j exist✂ cel pu in un arc între i ✁ i j.
a. 3n b. n! c. 2n d. 3n*(n-1)/2
6. Valoarea expresiei urm✂ toare
(x>-2)&&(!(x>2))||(x>=5)&&(x<10)
este diferit✂ de 0 dac✂ ✁ i numai dac✂ x apar ine intervalului:
a. (-2,2]∪ ∪[5,10) b. [-2,2] ∪[5,10) c. (2,5] d. (-2,10)
7. Se consider✂ urm✂ toarele declar✂ ri:
int x=3,i=0;
Ce va afi✁ a secven a al✂turat✂ ?
while(x-1){x--;i++;}
cout<<i; | printf(“%d”,i);
a. 1 b. 0 c. 2 d. 4
8. Consider✂ m urm✂toarea declarare:
struct produs{char denumire[10];int pret;} p;
Cum se poate accesa prima liter✂ a denumirii unui produs ale c✂ rui caracteristici sunt memorate în
variabila p ?
a. [Link][1] b. p->denumire c. [Link][0] d. p->denumire[1]
INFORMATIC✄, limbajul C/C++ 1 Varianta 53
Ministerul Educa iei ✁ i Cercet✂ rii - Serviciul Na ional de Evaluare ✁ i Examinare
SUBIECTUL II (20 de puncte)
Se consider programul pseudocod al turat. cite te x {x [Link]}
S-au folosit urm✂toarele nota ii: mod pentru restul împ✂r irii ┌pentru c 0,9 execută
întregi iar div pentru câtul împ✂r irii întregi. │ y x
│ p 0
1. Ce se va afi✁ a pentru x=1232189? (5p.) │ ┌repetă
│ │┌dacă y mod 10=c atunci
2. Da i o valoare pentru num✂rul x astfel încât algoritmul │ ││ p p+1
s✂ nu afi✁ eze nimic. (3p.) │ │└■
│ │ y y div 10
3. Scrie i un program pseudocod care s✂ fie echivalent cu
│ └până când y=0
cel dat, dar în care s✂ se înlocuiasc✂ structura repetitiv✂
│ ┌dacă p>1 atunci
pentru cu o structur✂ repetitiv✂ cu test ini ial. │ │ scrie c
(4p.) │ └■
4. Scrie i programul C/C++ corespunz✂tor algoritmului dat. └■
(8p.)
SUBIECTUL III (30 de puncte)
1. Se consider✂ o list✂ circular✂ simplu înl✂n uit✂, fiecare nod al listei re inând în câmpul leg adresa
elementului urm✂tor al listei. Componentele listei memoreaz✂ în câmpul info, în ordine, numere
naturale consecutive începând cu num✂ rul 1.
Scrie i declar✂ rile de date ✁ i un subprogram elimin ce realizeaz✂ ✁ tergerea din list✂ a nodurilor ce
memoreaz✂ numere p✂trate perfecte. Subprogramul elimin are un singur parametru p,
reprezentând adresa nodului ce memoreaz✂ valoarea 1.
În exemplul ilustrat de figura urm✂ toare, dac✂ lista con ine ini ial numerele de la 1 la 6, dup✂ apelul
subprogramului elimin(p) aceasta va con ine, în ordine, valorile 2, 3, 5, 6.
p
1
6 6 p
2 2
5 3 3
5
4 (10p.)
2. Prin sec iune a unui ✁ ir V în elegem o succesiune de elemente ale lui V situate pe pozi ii consecutive
în ✁ irul dat. Dac✂ în fi✁ ierul text [Link] se afl✂ pe prima linie un num✂ r natural n(1<n<10000) iar
pe linia urm✂toare cele n componente întregi ale ✁ irului V, componente cu cel mult patru cifre fiecare,
se cere s✂ se determine în mod eficient sec iunea de sum✂ minim✂ . Se va afi✁ a pe ecran num✂rul
reprezentând suma minim✂ determinat✂.
a) Explica i în limbaj natural metoda utilizat✂, justificând eficien a acesteia (4-5 rânduri). (2p.)
b) Scrie i programul C/C++ corespunz✂ tor metodei descrise la punctul a). (8p.)
De exemplu, dac✂ fi✁ ierul [Link] con ine:
6
-3 2 -3 -4 5 6
se va afi✁ a :
-8
3. Se citesc de la tastatur✂ dou✂ numere naturale n ✁ i p (1<n<1000,1<p<10). S✂ se afi✁ eze pe
ecran, cu spa iu între ele, acele numere naturale mai mici sau egale cu n care au toate cifrele mai
mici sau egale cu p.
De exemplu, dac✂ n=15 ✁ i p=2 , se vor afi✁ a :
0 1 2 10 11 12 (10p.)
INFORMATIC✄, limbajul C/C++ 2 Varianta 53
Ministerul Educaţiei, Cercetării şi Inovării
Centrul Naţional pentru Curriculum şi Evaluare în Învăţământul Preuniversitar
EXAMENUL DE BACALAUREAT – 2009
Proba scrisă la INFORMATICĂ
PROBA E, limbajul C/C++
Specializarea Matematică-informatică intensiv informatică
♦ Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.
♦ Timpul efectiv de lucru 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ă).
Subiectul I (30 de puncte) - Varianta 054
Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.
1. Cărui interval îi aparţine valoarea memorată de variabila reală x astfel încât expresia
următoare, scrisă în limbajul C/C++, să aibă valoarea 1?
!((x<=1) || (x>50)) (4p.)
a. (1,50) b. (-∞,1] ∪ (50, ∞)
c. [1,50) d. (1,50]
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
citeşte n (număr natural nenul)
2. Se consideră algoritmul alăturat, descris în
pseudocod.
sÅ0
S-a notat cu x%y restul împărţirii numărului întreg x la ┌cât timp n>0 execută
numărul întreg nenul y şi cu [a] partea întreagă a │ cÅn%10
numărului real a. │ ┌dacă c%2=0 atunci
a) Scrieţi care este valoarea afişată dacă se │ │ pÅ1
citeşte numărul 1234. (6p.) │ │ ┌pentru iÅ2,c execută
│ │ │ pÅp*i
│ │ └■
b) Scrieţi un număr natural, de exact 4 cifre, │ │ sÅs+p
care poate fi citit pentru variabila n, astfel încât │ └■
valoarea afişată să fie 3. (4p.) │ nÅ[n/10]
└■
c) Scrieţi în pseudocod un algoritm echivalent cu
cel dat, în care să se înlocuiască structura
scrie s
repetitivă pentru...execută cu o structură
repetitivă cu test final. (6p.)
d) Scrieţi programul C/C++ corespunzător
algoritmului dat. (10p.)
BACALAUREAT 2009 - INFORMATICĂ, limbajul C/C++ Subiectul I
Specializarea Matematică-informatică intensiv informatică
Ministerul Educaţiei, Cercetării şi Inovării
Centrul Naţional pentru Curriculum şi Evaluare în Învăţământul Preuniversitar
Subiectul II (30 de puncte) - Varianta 054
Pentru fiecare dintre itemii 1 şi 2 scrieţi pe foaia de examen litera care corespunde
răspunsului corect.
1. Se consideră un graf neorientat complet cu 10 vârfuri. Câte lanţuri elementare distincte de
lungime 3 există între vârful 2 şi vârful 4? Două lanţuri sunt distincte dacă diferă prin cel
puţin o muchie. (4p.)
a. 90 b. 28 c. 45 d. 56
2. Se consideră graful orientat din figura
alăturată. Câte dintre vârfurile grafului au
gradul intern egal cu gradul extern?
(4p.)
a. 3 b. 2 c. 1 d. 4
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
3. În secvenţa alăturată, variabila x strcpy(x,”bac2009”);
memorează un şir de caractere, iar toate k1=strlen(x);
celelalte variabile sunt de tip întreg. k2=0;
Ce valori au variabilele k1 şi k2 după for (i=0;i<strlen(x);i++)
executarea secvenţei de instrucţiuni if( x[i]>=’0’ && x[i]<=’9’)
alăturate? (6p.) k2=k2+1;
4. Se consideră lista liniară simplu înlănţuită, alocată dinamic, cu 6 noduri, reprezentată mai
jos, în care fiecare nod conţine în câmpul info un număr natural, iar în câmpul urm adresa
nodului următor din listă sau NULL dacă nu există un nod următor.
Dacă adresa primului nod este memorată în variabila prim, iar variabila p este de acelaşi
tip cu prim, ce se afişează la executarea secvenţei de mai jos?
for(p=prim->urm;p->urm!=NULL;p=p->urm->urm)
cout<<p->info<<” ”; | printf(”%d ”,p->info); (6p.)
5. Scrieţi un program C/C++ care citeşte de la tastatură un număr natural par, n (4≤n≤10), şi
un număr natural x, cu exact 3 cifre, şi care construieşte în memorie un tablou
bidimensional cu n linii şi n coloane, ce are elementele de pe diagonala principală egale cu
prima cifră a numărului x, elementele de pe diagonala secundară egale cu ultima cifră a
numărului x, iar restul elementelor egale cu cifra din mijloc a numărului x.
Tabloul bidimensional se va afişa pe ecran, câte o linie a tabloului pe câte o 1 2 2 3
linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu. 2 1 3 2
Exemplu: dacă se citesc de la tastatură n=4 şi x=123 atunci se afişează 2 3 1 2
tabloul alăturat. (10p.) 3 2 2 1
BACALAUREAT 2009 - INFORMATICĂ, limbajul C/C++ Subiectul II
Specializarea Matematică-informatică intensiv informatică
Ministerul Educaţiei, Cercetării şi Inovării
Centrul Naţional pentru Curriculum şi Evaluare în Învăţământul Preuniversitar
Subiectul III (30 de puncte) - Varianta 054
Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.
1. Utilizând metoda backtracking se generează în ordine lexicografică toate anagramele
cuvântului caiet ( cuvinte formate din aceleaşi litere, eventual în altă ordine). Care este a
şasea soluţie? (4p.)
a. catei b. actie
c. actei d. catie
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
2. Se consideră subprogramul f void f(int i)
definit alaturat. Ce se afişează la {
if(i<=5){
apelul f(1)?
cout<<i<<” ” ;| printf(”%d ”,i);
(6p.) f(i+1);
cout<<i/2<<” ”;| printf(”%d ”,i/2);
}
3. Se consideră subprogramul inv, care primeşte prin intermediul primului parametru a un
număr natural, cu minimum două cifre şi maximum 8 cifre, şi furnizează prin intermediul
celui de-al doilea parametru, b, valoarea numărului natural format cu aceleaşi cifre ca şi a,
considerate în ordine inversă. De exemplu, pentru a=3805, după apel b va avea valoarea
5083., iar dacă a=3800, după apel b va avea valoarea 83.
a) Scrieţi definitia completă a subprogramului inv. (4p.)
b) Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n de minimum
două şi maximum 8 cifre şi afişează pe ecran un număr palindrom cu valoarea cea mai
apropiată de valoarea lui n citită. În cazul în care există două astfel de numere, se va afişa
cel mai mic dintre ele. Se vor folosi apeluri utile ale subprogramului inv.
Spunem că un număr natural x este palindrom dacă numărul format din cifrele lui x
considerate de la stânga către dreapta este acelaşi cu numărul format din cifrele lui x
considerate de la dreapta către stânga.
Exemplu: dacă n=16, atunci se afişează valoarea 11, dacă n=126, atunci se afişează
121, iar dacă a=33, atunci se afişează 33. (6p.)
4. Fişierul text [Link] conţine pe prima linie un număr natural nenul n (n≤100), iar pe a
doua linie un şir de n numere naturale nenule distincte, separate prin câte un spaţiu,
fiecare număr având maximum 8 cifre.
a) Scrieţi un program C/C++ care citeşte numerele din fişier şi determină câte dintre
comopnentele şirului citit pot fi scrise ca sumă a altor două numere din acelaşi şir.
Rezultatul obţinut se va afişa pe ecran. În cazul în care nu există niciun astfel de element,
se va afişa valoarea 0.
Exemplu: dacă fişierul [Link] conţine
6
1 10 25 2 15 3
atunci se va afişa valoarea 2 (deoarece 25=10+15, 3=1+2). (8p.)
b) Descrieţi pe scurt, în limbaj natural, metoda de rezolvare. (2p.)
BACALAUREAT 2009 - INFORMATICĂ, limbajul C/C++ Subiectul III
Specializarea Matematică-informatică intensiv informatică
Ministerul Educaţiei, Cercetării şi Inovării
Centrul Naţional pentru Curriculum şi Evaluare în Învăţământul Preuniversitar
EXAMENUL DE BACALAUREAT – 2009
Proba scrisă la INFORMATICĂ
PROBA E, limbajul C/C++
Specializarea Matematică-informatică intensiv informatică
♦ Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.
♦ Timpul efectiv de lucru 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ă).
Subiectul I (30 de puncte) - Varianta 053
Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.
1. Variabila întreagă x memorează un număr natural. Care dintre următoarele expresii C/C++
are valoarea 0 dacă şi numai dacă numărul memorat de x NU este divizibil cu 3? (4p.)
a. x%3 b. (1-x%3)+(2-x%3)
c. (1-x%3)*(2-x%3) d. 3-x%3
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
2. Se consideră algoritmul alăturat descris în pseudocod. citeşte x
S-a notat cu x%y restul împărţirii numărului întreg x la (număr natural nenul)
numărul întreg nenul y şi cu [a] partea întreagă a numărului zÅ0
real a. pÅ1
┌repetă
a) Scrieţi care este valoarea ce se va afişa dacă pentru │ cÅx%10
x se citeşte numărul 1234. (6p.) │ ┌dacă c%2≠0 atunci
│ │ zÅz+c*p
b) Scrieţi cea mai mică valoare formată din exact 4 cifre,
│ │ pÅp*10
care poate fi citită pentru variabila x, astfel încât
│ └■
algoritmul să afişeze valoarea 0. (4p.)
│ xÅ[x/10]
c) Scrieţi în pseudocod un algoritm echivalent cu cel dat, └până când x = 0
în care să se înlocuiască structura repetitivă cu test scrie z
final cu o structură repetitivă cu test iniţial. (6p.)
d) Scrieţi programul C/C++ corespunzător algoritmului
dat. (10p.)
BACALAUREAT 2009 - INFORMATICĂ, limbajul C/C++ Subiectul I
Specializarea Matematică-informatică intensiv informatică
Ministerul Educaţiei, Cercetării şi Inovării
Centrul Naţional pentru Curriculum şi Evaluare în Învăţământul Preuniversitar
Subiectul II (30 de puncte) - Varianta 053
Pentru fiecare dintre itemii 1 şi 2 scrieţi pe foaia de examen litera care corespunde
răspunsului corect.
1. În secvenţa alăturată, variabila x for(i=0;i<=strlen(x)-1;i=i+3)
memorează un şir cu cel mult 100 de cout<<x[i]; | printf(“%c”,x[i]);
caractere, iar variabila i este de tip întreg.
Care este numărul maxim de caractere pe
care îl poate avea şirul x astfel încât
secvenţa alăturată să afişeze exact 3
caractere ale acestuia? (4p.)
a. 7 b. 3 c. 9 d. 8
2. Se consideră un graf orientat cu 5 vârfuri şi 8 arce. Care dintre următoarele şiruri de
numere poate fi şirul gradelor exterioare ale vârfurilor acestui graf? (4p.)
a. 2, 3, 1, 1, 1 b. 2, 2, 6, 5, 1
c. 1, 0, 1, 1, 1, 1 d. 1, 1, 0, 2, 1
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
3. În secvenţa de program următoare, variabila a memorează elementele unui tablou
bidimensional cu 5 linii (numerotate de la 1 la 5) şi 5 coloane (numerotate de la 1 la 5), iar
celelalte variabile sunt de tip întreg.
Ce valoare se va afişa în urma executării secvenţei dacă se prelucrează tabloul bidimensional
alăturat? (6p.)
x=0; 1 2 3 4 2
for (i=1;i<=5;i++) 6 7 8 9 4
if(a[i][i]%2!=0) 1 2 0 4 3
x=x+a[i][6-i]; 7 2 1 4 5
cout<<x; | printf(“%d”,x); 1 2 3 4 5
4. În secvenţa de program următoare, variabila s memorează un şir de caractere, iar variabila
i este de tip întreg. Ce valoare se va afişa în urma executării secvenţei?
strcpy(s,”bacalaureat”);
i=strchr(s,’a’)-s;
cout<<i+1; | printf(“%d”,i+1); (6p.)
5. Se consideră o listă simplu înlănţuită alocată dinamic, în care fiecare nod memorează în
câmpul info un număr întreg, iar în câmpul urm adresa elementului următor sau NULL
dacă nu există un nod următor.
Scrieţi un program C/C++ care citeşte de la tastatură 3 numere naturale nenule n, a şi r
(n≤20, a≤10, r≤10) şi construieşte în memorie o listă simplu înlănţuită astfel încât
parcurgând lista de la primul nod până la ultimul nod şi afişând pe ecran, separate prin câte
un spaţiu, numerele memorate în câmpul info al fiecărui nod, se obţin în ordine strict
crescătoare toate elementele mulţimii M={a, a+r, a+2⋅r,...,a+(n-1)⋅r}.
Exemplu: dacă n=4, a=10, r=2 atunci se vor afişa elementele alăturate. 10 12 14 16
(10p.)
BACALAUREAT 2009 - INFORMATICĂ, limbajul C/C++ Subiectul II
Specializarea Matematică-informatică intensiv informatică
Ministerul Educaţiei, Cercetării şi Inovării
Centrul Naţional pentru Curriculum şi Evaluare în Învăţământul Preuniversitar
Subiectul III (30 de puncte) - Varianta 053
Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.
1. Subprogramul f realizează interschimbarea valorilor a două variabile întregi transmise prin
intermediul parametrilor x şi y. Care este antetul corect al subprogramului f? (4p.)
a. void f(int &x, int &y) b. int f(int x,int y)
c. void f(int x, int &y) d. void f(int &x, int y)
Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.
2. Se consideră subprogramul f, definit int f(unsigned int n)
alăturat. Pentru ce valori ale lui n {
if (n==0) return 0;
aparţinând intervalului [10, 20] se
else if(n%2==0)
obţine la apel f(n)= 0? ( 6p.) return n%10+f(n/10);
else return f(n/10);
}
3. Se consideră subprogramul cmmdc, care primeşte prin intermediul a doi parametri, a şi b,
două numere naturale nenule, cu maximum 8 cifre fiecare, şi returnează cel mai mare
divizor comun al valorilor parametrilor a şi b.
a) Scrieţi definiţia completă a subprogramului cmmdc. (4p.)
b) Scrieţi un program Pascal care citeşte de la tastatură un număr natural n (n<300), şi,
cu ajutorul subprogramului cmmdc, determină numărul perechilor de valori naturale (a,b),
1<a<b<n, cu proprietatea că a şi b nu au niciun divizor comun în afară de 1. Numărul
obţinut se va afişa pe ecran.
Exemplu: dacă se citeşte n=6, atunci se va afişa 6 (deoarece perechile (2,3), (2,5),
(3,4), (3,5), (4,5), (5,6) satisfac condiţiile din enunţ).
4. Fişierul text [Link] are două linii: pe prima linie conţine un număr natural nenul n
(n<=100), iar pe linia a doua un şir format din n numere naturale de cel mult 4 cifre fiecare,
despărţite prin spaţii. Scrieţi un program C/C++ care adaugă în fişier toate permutările
circulare distincte ale şirului de pe linia a doua a fişierului. Astfel, se vor adăuga la sfârşitul
fişierului încă n-1 linii, fiecare linie conţinând permutarea circulară cu o poziţie către
stânga, a elementelor şirului aflat pe linia precedentă din fişier. Elementele fiecărei
permutari vor fi separate prin câte un spaţiu.
Exemplu: dacă fişierul [Link] conţine liniile: 4
4 10 20 30 49
10 20 30 49 20 30 49 10
atunci, după rularea programului, fişierul va avea conţinutul 30 49 10 20
reprezentat alăturat. (10p.) 49 10 20 30
BACALAUREAT 2009 - INFORMATICĂ, limbajul C/C++ Subiectul III
Specializarea Matematică-informatică intensiv informatică