Sunteți pe pagina 1din 11

Name:

Class:

Date:

ID: A

Subiecte tehnici de programare licenta matematica-informatica 4 ani

Multiple Choice Identify the letter of the choice that best completes the statement or answers the question.

1.

Se consideră declaratiile:

 

var f:file of char; c:char; Ce contine fisierul f după executia secventei următoare:

rewrite(f); for c: =’z’ downto ‘a’ do write(f,c);

a. zyxwvutsrqponmlkjihgfedcba;

b. za;

c. nimic

d. abcdefghijklmnopqrstuvwxyz.

 

2.

Functia de mai jos determină termenul Fibonacci de rang n. E corectă? function fib(n:integer):integer; begin

 

fib=fib(n-1)+fib(n-2)

 

end;

a. da, pentru că respectă formula de calcul a sirului lui Fibonacci;

 

b. nu, pentru ca se autoapelează la nesfârsit.

3.

Functia de mai jos implementează recursiv calculul sumei S(n)=1+2+ int S(int n){ if(n<=0) return 0; else return (S(n+1)-(n+1));

+n.

E corectă?

}

a. nu, pentru că, desi are conditie de iesire din autoapelare, nu se ajunge la ea;

b. da, pentru că respectă matematic relatia si are conditie de oprire din autoapelare.

4.

Dacă există declaratia FILE f; si se apelează functia fopen() astfel:

 

f=fopen(“fisier.txt”,”w”); care afirmatie e adevărată?

a. fisierul fisier.txt a fost deschis pentru scriere; continutul său se păstrează;

b. fisierul fisier.txt a fost deschis pentru scriere, dar numai dacă exista pe disc;

c. fisierul fisier.txt a fost deschis pentru scriere/citire;

d. fisierul fisier.txt a fost deschis pentru scriere; dacă exista, continutul lui se pierde, iar dacă nu exista, fisierul va fi creat în momentul executării instructiunii de mai sus.

1

Name:

ID: A

5. Se consideră problema căutării unui element într-un vector ordonat cu n elemente (căutare binară). Care este complexitatea algoritmului (câti pasi se execută) în cazul cel mai defavorabil, adică atunci când elementul nu este în vector?

a)

b)

c)

a. O(n), pentru că verificăm fiecare element;

b. O(1), căutarea efectuându-se in timp constant;

c.

(

O log

2

n

)

, la fiecare pas înjumătătindu-se intervalul de căutare.

6.

În fisierul numere.txt, aflat pe disc, sunt scrise, pe linie, numerele: 1 2 3 4 5 6 Ce se afisează în urma executiei programului următor:

#include<stdio.h>

#include<stdlib.h>

FILE f;

int n,i;

void main(){ f=fopen(”numere.txt”,”r”);

 

for(i=1;i<4;i++)

{fscanf(”%d”,&n);printf(”%d”,n);} rewind(f);

for(i=1;i<4;i++)

{fscanf(”%d”,&n);printf(”%d”,n);}

FCLOSE f

 

}

a.

123456

b.

123

c.

123123

d.

123456123

7.

Streamurile standard (adică streamurile care sunt deschise automat când un program C îsi începe executia) sunt:

a. stdin,stdout;

b. stdin,stdout,stderr;

c. nu există strem-uri standard.

2

Name:

ID: A

8.

Se consideră următorul arbore binar, reprezentat mai jos:

 
 
4 1 9 6 7 2
4
1
9
6
7
2

8

 

Este arborele binar complet?

3

10

11

5

a.

da

9.

nu Se consideră următorul arbore binar, reprezentat mai jos:

b.

 
 

3

4 1 9 6 7 2
4
1
9
6
7
2

10

11

5

8

Care este înăltimea arborelui binar?

a. 1

b. 3

c. 4

d. 5

e. 11

3

Name:

ID: A

10.

Se consideră următorul arbore binar, reprezentat mai jos:

 
 
4 1 9 6 7 2
4
1
9
6
7
2

8

 

Este arborele binar strict?

3

10

11

5

a.

da

11.

nu Se consideră următorul arbore binar, reprezentat mai jos:

b.

 
 

3

4 1 9 6 7 2
4
1
9
6
7
2

10

11

5

8

Parcurgerea in inordine este:

a. 4,1,9,6,7,2,8,3,10,11,5

b. 3,6,1,4,9,8,10,7,2,5,11

c. 3,6,10,1,7,4,11,2,5,9,8

4

Name:

ID: A

12.

Se consideră următorul arbore binar, reprezentat mai jos:

 
4 1 9 6 7 2
4
1
9
6
7
2

8

 

3

Parcurgerea in preordine este:

10

11

5

a. 4,1,9,6,7,2,8,3,10,11,5

b. 4,3,6,1,9,8,10,7,2,5,11

c. 4,1,6,3,10,7,9,2,11,5,8

13.

Se consideră următorul arbore binar, reprezentat mai jos:

 
4 1 9 6 7 2
4
1
9
6
7
2

8

 

3

Parcurgerea in postordine este:

10

11

5

a. 4,1,9,6,7,2,8,3,10,11,5

b. 3,10,6,7,1,11,5,2,8,9,4

c. 3,6,8,10,7,4,1,11,2,5,9

14.

Un arbore binar cu n vârfuri este plin. Precizati ce valoare poate avea n, dintre cele de mai jos:

a. 5

b. 7

c. 8

d. 9

5

Name:

15.

Pentru implementarea unei stive, se folosesc functiile:

ID: A

init(): initializarea stivei (vârful stivei devine -1) empty(): returnează 1 daca stiva e goală si 0 în caz contrar push(val): adauga item-ul val în stivă pop(): returnează (stergându-l din stivă) elementul din vârful stivei top(): returnează elementul din vârful stivei, fără a-l sterge însă

Ce apare la iesire, dacă asupra stivei se execută prelucrările de mai jos (presupunem ca functia scrie afisează pe ecran parametrul ei, urmat de un spatiu):

16.

17.

init();

push(100);

push(54);

scrie(top()); pop(); scrie(top());

push(60);

push(630);

scrie(top()); pop(); scrie(top()); pop(); scrie(top());

a. 54 100 60 630 60

b. 54 100 630 60 100

c. 54 60 100 630 100 Care este timpul în cazul cel mai defavorabil pentru algoritmul lui Kruskal, aplicat unui graf complet cu n vârfuri?

a.

b.

c.

O

O

O

(

(

(

2

n

)

n log

2

2

n

log

n

)

2

n

)

Fie graful de mai jos:

2

4

5

3 1 3 1 2
3
1
3
1 2

3

1

3

4

Din câte muchii e format arborele partial de cost minim?

a. 3

b. 4

c. 5

d. 7

6

Name: ID: A 18. Fie graful de mai jos: 3 2 1 1 4 3
Name:
ID: A
18.
Fie graful de mai jos:
3
2
1
1
4
3
3
1
2
5
4
3
Precizati ordinea muchiilor care se adaugă pentru determinarea arborelui partial de cost minim,
folosind algoritmul lui Kruskal:
a. (2,3),(3,5),(3,4),(1,2),(1,4),(4,5),(2,5)
b. (2,3),(3,5),(3,4),(1,2)
c. (2,3),(3,5),(2,5),(3,4)
19.
Fie graful de mai jos:
3
2
1
1
4
3
3
1
2
5
4

3

Care este distanta minimă de la 1 la 5, conform algoritmului lui Dijkstra?

a. 3

b. 4

c. 5

d. 6

7

Name:

20.

Se consideră arborele de căutare de mai jos:

12 5 18 2 9 15 19 17
12
5
18
2
9
15
19
17

Valoarea 13 va fi inserată în arbore:

a. ca fiu drept al lui 2

b. ca fiu drept al lui 9

c. ca fiu stâng al lui 15

d. ca fiu stâng al lui 19

e. ca fiu stâng al lui 17

8

ID: A

Name:

21.

Se consideră arborele de căutare de mai jos:

12 5 18 2 9 15 19 17
12
5
18
2
9
15
19
17

Dacă stergem rădăcina (12), ce nod va ajunge în locul ei ?

a. 5

b. 18

c. 9

d. 15

e. 17

ID: A

22. Metoda de sortare rapidă (Quicksort) găseste pivotul (printr-un algoritm de partitie) si se autoapelează pentru cele două portiuni din vectorul initial. Algoritmul de partitie de mai jos e corect? Presupunem că a este un tablou de întregi, i si j sunt indicele de start, respectiv de sfârsit ale elementelor pe care le sortează. De asemenea, functia swap(x,y) interschimbă x si y. Functia întoarce pozitia (finală) a lui a[i].

int partitie(a,i,j){int val,h,k; val=a[i]; h=i;

}

a. da

b. nu

for(k=i+1;i<=j;i++)

if(a[k]<=val){

h=h+1;

swap(a[h],a[k]);

}

swap(a[i],a[h]);

return h;

9

Name:

ID: A

23.

Se consideră implementarea unei liste simplu înlăntuite sub forma:

typedef struct nod{ int info; struct nod *adr; }lista;

lista *c

/*capul listei*/

,*p,*q;

Pentru inserarea unui elementului 3 în capul unei liste înlăntuite (dat de c), se fac următorii pasi:

a. p=(lista*)malloc(sizeof(lista)); p->info=3;p->adr=c;c=p;

b. p=(lista*)malloc(sizeof(lista)); p->info=3; c=p;p->adr=c;

24.

Se consideră implementarea unei liste simplu înlăntuite sub forma:

typedef struct nod{ int info; struct nod *adr; }lista;

lista *c

/*capul listei*/

,*p,*q;

Dacă vrem să stergem capul listei, se fac pasii:

a. free(c);

b. p=c;c=c->adr;free(p);

25.

Se consideră implementarea unei liste simplu înlăntuite sub forma:

typedef struct nod{ int info; struct nod *adr; }lista;

lista *c

/*capul listei*/

,*p,*q;

Presupunând că vrem să stergem elementul imediat următor celui pe care punctează p, se fac pasii:

a. q=p->adr;free(q);p->adr=q->adr;

b. q=p->adr;p->adr=q->adr;free(q);

26.

Se consideră implementarea unei liste simplu înlăntuite sub forma:

typedef struct nod{ int info; struct nod *adr; }lista;

lista *c

,*p,*q;

/*capul listei*/

Presupunând că vrem să inserăm un element după cel punctat de p, se fac pasii:

a. q=(lista*)malloc(sizeof(lista));p->adr=q;q->adr=p->adr;

b. q=(lista*)malloc(sizeof(lista));q->adr=p->adr; p->adr=q;

10

Name:

ID: A

27.

Se consideră implementarea unei liste simplu înlăntuite sub forma:

typedef struct nod{ int info; struct nod *adr; }lista;

lista *c

/*capul listei*/

,*p,*q;

Ce efect are următoarea functie, dacă se apelează scriu(c)? void scriu(lista* p) { if(p) {scriu(p->adr);printf(“%d “,p->info);}

}

a. afisează lista de la primul la ultimul element

b. afisează lista de la ultimul element la primul

28.

Coada de priorităti este:

a. o structură de date care contine o multime S de elemente, fiecare având asociată o valoare numită cheie; inserarea adaugă un element, iar extragerea unui element returnează elementul cu prioritatea maximă

b. o structură de date care contine o multime S de elemente, în care intrările se fac la un capăt al ei, iar iesirile la celălalt capăt

c. o structură de date care contine o multime S de elemente,în care intrările si iesirile se fac la un singur capăt.

11