Sunteți pe pagina 1din 3

SIMULAREA EXAMENULUI DE BACALAUREAT – 14 MARTIE 2013

Proba E. d)
Proba scrisă la INFORMATICĂ
Limbajul C/C++
Varianta 1
Filiera teoretică, profilul real, specializările: matematică-informatică
matematică-informatică intensiv 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. Ce valoare are variabila întreagă n în urma for(i=1;i<=100;i++)


executării secvenţei alăturate, ştiind că, for(j=1;j<=i;j++)
iniţial, valoarea ei este 0? (4 p) n=n+1;
a. 500 b. 150 c. 1000 d. 5050

2. Se consideră programul pseudocod alăturat, în care s-a folosit notaţia [a] pentru partea
întreagă a numărului real a.

a) Care este valoarea afişată pentru n=1234? citeşte n (număr întreg,n>0)


(6p) k0
b) Scrieţi o valoare de două cifre pentru c0
variabila n, astfel încât să se afişeze 1. (6p) nauxn
c) Scrieţi un algoritm în pseudocod, echivalent cât timp naux>0 execută
cu cel dat, în care să se înlocuiască structura  naux naux / 10
repetitivă de tip pentru … execută cu o
 kk+1
structură repetitivă de alt tip. (4p)
d) Scrieţi programul C/C++ corespunzător  cc*10+1
algoritmului dat. (10p) 
pentru i1,k execută
 nn-c
 c c / 10

scrie n
SUBIECTUL II (30 de puncte)
Pentru fiecare dintre itemii 1 şi 2 scrieţi pe foia de examen litera corespunzătoare răspunsului
corect.

1. Care este numărul maxim de vârfuri de grad 0 pe care le poate avea un graf neorientat cu 70 de
noduri şi 32 de muchii? (4 p)
a. 60 b. 61 c. 65 d. 70

2. Un arbore cu rădăcină are nodurile numerotate de la 1 la 16 şi este reprezentat prin vectorul de


taţi t: (6,4,1,6,6,0,5,5,16,5,10,8,16,3,3,4). Numărul descendenţilor direcţi
ai nodului 5 este egal cu: (4 p)
a. 3 b. 4 c. 2 d. 6

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.

3. În secvenţa alăturată, variabilele m, p şi k k=4;


sunt de tip întreg, iar variabila a memorează for(m=1;m<=5;m++)
o matrice în care prima linie şi prima for(p=1;p<=4;p++)
coloană sunt numerotate cu 1. Toate { a[m][p]=k+2;
elementele matricei primesc valori în urma k=k+2;
executării secvenţei. }
Scrieţi în ordine, începând cu prima coloană,
elementele situate pe a doua linie a matricei
care se va construi în urma executării
secvenţei alăturate. (6 p)

4. Scrieţi o secvenţă de program C/C++ care să realizeze interschimbarea liniei p cu linia q a unui
tablou bidimensional a cu n linii şi n coloane numerotate de la 1 la n. Dacă sunt necesare şi alte
variabile, scrieţi declarările acestora. (6 p)

5. Scrieţi un program C/C++ care citeşte de la tastatură o frază cu cel mult 200 de caractere, în
care cuvintele sunt separate prin câte un spaţiu. Programul construieşte în memorie şi afişează
pe ecran un şir care conţine doar al doilea caracter, în cazul cuvintelor alcătuite din mai multe
caractere, sau primul caracter, în cazul cuvintelor formate dintr-un singur caracter, ca în
exemplul de mai jos. (10 p)
Exemplu. Dacă se citeşte fraza:
Ana are mure dar a avut si mere
atunci pe ecran se va afişa: nruaavie
SUBIECTUL III (30 de puncte)
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 şirurile obţinute prin
permutarea literelor din mulţimea {b,r,a,d}. Primele două şiruri obţinute sunt, în această
ordine, abdr şi abrd. Al 5-lea şir generat este: (4 p)
a. arbd b. ardb c. bdar d. bdra

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare.


2. Scrieţi ce se afişează în urma apelului void f(int x)
f(12345), pentru subprogramul f definit { cout<<"*"; | printf("*");
alăturat. (6 p) if(x>0)
{ cout<<x; | printf("%d",x);
f(x/100);
cout<<"*"; | printf("*");
}
}

3. Subprogramul inter are patru parametri:


 na şi nb – prin care primeşte câte un număr natural (0<na<100, 0<nb<100);
 a şi b – prin care primeşte câte un tablou unidimensional, ce memorează câte o mulţime de
na, respectiv nb numere naturale, fiecare având cel mult 4 cifre.
Subprogramul returnează numărul de elemente aparţinând intersecţiei celor două mulţimi
menţionate. Scrieţi definiţia completă a subprogramului inter în limbajul C/C++.
Exemplu. Pentru na=4, a=(35,149,72,3798), nb=5, b=(72,151,149,9,623), în
urma apelului, subprogramul inter returnează valoarea 2. (10 p)

4. Fişierul BAC.TXT conţine un şir de cel puţin 11 şi cel mult 1000000 de numere naturale,
despărţite prin câte un spaţiu. Fiecare număr are cel puţin 2 şi cel mult 9 cifre. Primul termen al
şirului are numărul de ordine 1, al doilea are numărul de ordine 2 etc.
Se citeşte şirul din fişier şi se cere ca, utilizând un algoritm eficient din punctul de vedere al
timpului de execuţie, să se determine şi să se afişeze pe ecran numărul de ordine al unui termen
al şirului cu proprietatea că, în fişier, este precedat de un număr maxim de valori care au cifra
zecilor egală cu a sa. Dacă sunt mai mulţi termeni cu această proprietate, se afişează doar
numărul de ordine al unuia dintre ei.
Exemplu.
Dacă fişierul BAC.TXT conţine numerele 12 36 265 18 139 19 32 34 112 14 68,
pe ecran se afişează 10 (numărul de ordine al termenului 14).
a. Descrieţi în limbaj natural algoritmul utilizat, justificând eficienţa acestuia. (4 p)
b. Scrieţi programul C/C++ corespunzător algoritmului descris. (6 p)

S-ar putea să vă placă și