Sunteți pe pagina 1din 2

Nume Prenume......................

Test
SUBIECTUL I (30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Variabilele x, y i z sunt de tip ntreg i memoreaz numere naturale din intervalul
[1,103]. Indicai o expresie C/C++ care are valoarea 1 dac i numai dac valoarea
variabilei x este strict mai mare dect valoarea oricreia 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 alturat, reprezentat n pseudocod.
S-a notat cu a%b restul mpririi numrului natural a la numrul natural nenul b i cu [c] partea
ntreag a numrului real c. citete n (numr natural nenul)
k1
m1
ct 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) Scriei valoarea afiat n urma executrii algoritmului dac se citete numrul 81112337. (6p.)
b) Scriei numrul de valori din intervalul [10000,99999] care s nceap cu cifra 1, care pot fi citite
pentru variabila n, astfel nct, n urma executrii algoritmului, pentru fiecare dintre acestea, s se
afieze valoarea 4. (4p.)
c) Scriei n pseudocod un algoritm echivalent cu cel dat, nlocuind structura ct timp...execut cu
o structur repetitiv de alt tip. (6p.)
d) Scriei programul C/C++ corespunztor algoritmului dat. (10p.)
SUBIECTUL al II-lea (30 de puncte)
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 crei 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 vrf al su are gradul interior
un numr nenul. Numrul maxim de noduri pe care le poate avea graful este: (4p.)
3. Un arbore cu 8 noduri, numerotate de la 1 la 8, este reprezentat prin urmtorul vector de tai (3,
0, 2, 5, 2, 5, 1, 5). Determinai cel mai lung lan elementar care are o extremitate n rdcin i
enumerai nodurile sale, n ordinea apariiei 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, numrul de locuri nchiriate pe parcursul orei curente, precum i preul
practicat de zona respectiv pentru nchirierea unui loc pentru o or.

struct parcare
{ int nrLocuriInchiriate;
int pretOra;
} p[20];
Fr a utiliza alte variabile dect cele menionate, scriei o secven de instruciuni n urma
executrii creia variabila s s memoreze suma total obinut n urma nchirierii locurilor de
parcare din ora pe parcursul orei curente. (6p.)
5. Scriei un program C/C++ care citete de la tastatur, n aceast ordine, un numr natural n, apoi
n cuvinte, separate prin Enter, urmate de un numr natural k. Numerele citite sunt din intervalul
[1,20], iar fiecare cuvnt este format din cel mult 20 de caractere, numai litere mici ale alfabetului
englez. Cel puin unul dintre cuvinte are k litere. Programul construiete n memorie, apoi afieaz
pe ecran, un ir care s cuprind cuvintele citite, separate prin cte un spaiu, astfel nct toate cele
care au k litere s ocupe primele poziii, iar celelalte s se regseasc n continuarea acestora, ntr-o
ordine oarecare.
Exemplu: dac se citesc, n aceast ordine, datele alturate, unul dintre irurile obinute
poate fi: am un de cires mai (10p.)
5
am
un
cires
de
mai
2
SUBIECTUL al III-lea (30 de puncte)
Pentru itemul 1, scriei pe foaia de examen litera corespunztoare rspunsului corect.
1. Subprogramul f este definit alturat. Indicai cea mai mare valoare din intervalul [20,25] pe care o poate
avea variabila ntreag x, astfel nct, 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<<" ";
f(n/2, p*2);
}
}

Scriei pe foaia de examen rspunsul pentru fiecare dintre cerinele urmtoare.


2. Utiliznd metoda backtracking se genereaz, n ordine lexicografic, toate irurile de cte 6 cifre
din mulimea {0,1} cu proprietatea c au cel mult dou cifre cu valori egale pe poziii consecutive.
Primele 5 soluii generate sunt, n aceast ordine: 001001, 001010, 001011, 001100, 001101. Scriei
a 7-a i a 8-a soluie, n ordinea generrii acestora. (6p.)
3. Subprogramul minDivPrim are un singur parametru, n, prin care primete un numr natural
(n[2,109]). Subprogramul returneaz cel mai mic numr natural care are aceiai divizori primi ca n.
Scriei definiia complet a subprogramului.
Exemplu: dac n=75, subprogramul returneaz numrul 15, iar dac n=7, subprogramul returneaz
numrul 7. (10p.)
4. Se consider irul 1, -1, 2 ... definit astfel: f1=1, f2=-1, iar fn=1-2fn-1-fn-2, dac n3 (unde n este
un numr natural). Se citete de la tastatur un numr natural, n (n [1,109]), i se cere s se scrie n
fiierul text bac.out, separai prin cte un spaiu, primii n termeni ai irului, n ordine invers
apariiei lor n acesta. Pentru determinarea i afiarea numerelor cerute se utilizeaz un algoritm
eficient din punctul de vedere al spaiului de memorie i al timpului de executare.
Exemplu: dac n=3, fiierul conine valorile 2 -1 1
a) Descriei n limbaj natural algoritmul utilizat, justificnd eficiena acestuia. (4p.)
b) Scriei programul C/C++ corespunztor algoritmului descris. (6p.)

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