Sunteți pe pagina 1din 2

SIMULARE BAC

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 întregi x şi y memorează numere naturale nenule. Care dintre următoarele expresii C/C++ este
nenulă dacă şi numai dacă numărul obţinut prin însumarea valorilor variabilelor x şi y are ultima cifră 0?

a. x%10+y%10==0 b. y%10==x%10 c. x+y%10==0 d. (x%10+y%10)%10==0

2. Se consideră subprogramul F, definit alăturat. void F(int x)


Ce se va afișa la apelul F(38)? { if(x)
{F(x/3); cout<<x/3+1;}}

a.1 2 5 13 b.0 1 4 12 c. 2 5 13 d. 1 4 12

3. Se generează, utilizând metoda backtracking, toate modalităţile de repartizare a n teme de proiecte,


numerotate de la 1 la n, pentru m elevi (n<m), numerotaţi de la 1 la m, astfel încât fiecare temă să fie rezolvată
de cel puţin un elev. Care este numărul total de soluţii generate pentru m=3 şi n=2, dacă primele 3 soluţii
generate sunt, în ordine, 1 1 2, 1 2 1, 1 2 2? O soluţie este scrisă sub forma t1, t2, ...,tm, unde ti reprezintă
tema
repartizată elevului i (1≤i≤m, 1≤ti≤n).
a. 12 b. 6 c. 4 d. 8

4.Care dintre următoarele afirmaţii este adevărată pentru orice graf neorientat G cu 3 noduri şi 3 muchii?
a. este conex b. are două noduri izolate c. nu poate avea cicluri d. are un nod izolat

5.Fie T un arbore cu rădăcină. Arborele are 8 noduri numerotate de la 1 la 8 şi este descris prin următorul
vector „de taţi”: (3,5,0,3,3,5,5,5). Care sunt “fratii” nodului 5?
a. 1 si 4 b. 2,6,7,8 c. 3 d. 4 si 6
SUBIECTUL al II-lea (40 de puncte)

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


1.Se consideră algoritmul alăturat, descris în pseudocod:
S-a notat cu a%b restul împărţirii numărului întreg a la numărul întreg nenul b şi cu [x] partea întreagă a
numărului real x
a) Scrieţi valoarea care se va afişa citeste n (număr natural)
pentru n=20 (6p) q1
b) Scrieti o valoare care poate fi citita i1
pentru variabila n, astfel incat cât timp i<[n/i] executa
numarul afisat sa fie 9 (6p) daca n%i=0 atunci
c) Scrieti programul C++ corespunzator qq+i
algoritmului dat (10p)
d) Scrieti in pseudocod un algoritm, ii+3
echivalent cu cel dat, în care să se
înlocuiască structura cât timp ... scrie q
execută cu o structură repetitivă de
alt tip (6p)

2. Variabila t este utilizată pentru a memora simultan valoarea, numele autorului şi data apariţiei unei cărţi.
Valoarea cărţii este un număr natural de cel mult 3 cifre, data apariţiei este dată de trei numere naturale,
reprezentând ziua, luna şi anul în care a apărut, iar numele autorului nu poate avea mai mult de 20 de litere.
Scrieţi definiţia unei structuri cu eticheta carte şi declaraţi corespunzător variabila t. (6p)

3. Variabila a memorează o matrice cu 10 linii şi 10 coloane, numerotate de la 1 la 10, iar i şi j sunt variabile
întregi cu valori cuprinse între 1 şi 10. Scrieţi o expresie C/C++ care să fie nenulă dacă şi numai dacă elementul
a[i][j] nu se află pe niciuna dintre diagonalele acestei matrice. (6p)

SUBIECTUL al III-lea (30 de puncte)


1. Se consideră subprogramul multiplu, cu doi parametri, care:
– primeşte prin intermediul parametrilor a şi k două numere întregi de cel mult 4 cifre;
– returnează cel mai mic multiplu al lui k mai mare sau egal cu a.
Exemplu: pentru a=6 si k=5 funcţia va returna valoarea 10. (10p)

2. Scrieţi un program C/C++ care citeşte de la tastatură un şir de cel mult 50 de caractere (litere mici şi mari ale
alfabetului englez, cifre, puncte, virgule şi spaţii) şi afişează pe o linie a ecranului câte cuvinte conţin cel putin o
cifră, iar pe linia următoare, separate printr-un spaţiu, cuvintele respective sau mesajul NU EXISTA dacă textul
citit nu conține astfel de cuvinte. (10p)
Exemplu: dacă se citeşte şirul:
Voi lua 9,5 la matematica 10 la informatica si 10 la romana
se va afişa pe ecran:
3
9,5 10 10
iar daca se citeste sirul Voi lua o nota mare, se va afisa mesajul NU EXISTA.

3.În fișierul bac.txt se află, pe prima linie, doua numere naturale n şi m (m,n≤106), pe linia a doua, n numere
intregi din intervalul [-104,104], iar pe linia a treia m numere naturale mai mici sau egale cu n, reprezentând o
poziţie oarecare i din şirul celor n numere. Se cere să se afișeze pe ecran, separate printr-un spaţiu, m numere
s1, s2, ..., sm, unde si reprezintă suma primelor i numere întregi din fisierul bac.txt. Proiectați un algoritm eficient
din punct de vedere al timpului de executare.
Ex. Daca fişierul bac.txt are următoaru conţinut:
73
12 -3 1 22 108 -11 36
362
se va afișa pe ecran: 10 129 9
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.)

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