Sunteți pe pagina 1din 2

Lucrare scrisă la informatică

1. Se consideră funcţia următoare


int f(int &n, int m)
{ while (n%m==0){ n/=m; m++;}
return m-1;
}
A. (1p) Care din următoarele afirmaţii sunt adevărate?
a) Parametrii funcţiei sunt transmiși prin referinţă.
b) Funcţia returnează o singură valoare.
c) Valoarea variabilei n se modifică după încetarea apelului funcţiei.
d) Valoarea variabilei m nu se modifică după încetarea apelului funcţiei.
B. (0,5 p) Dacă n-120, ce valoare este returnată în urma apelului f(n,2) și care este
valoarea variabilei n după apel?
a) 6, n=1 b) 5, n=1 c) 2, n=1 d) 5, n=120
2. (0,5 p) Se consideră funcţia următoare
int f(int n)
{ return n%100/10;
}
Ce se obține în urma apelului f(123456)? Dar pentru f(2)
3. (1,5 p) Se dă funcţia de mai jos:
int an(int n)
{ if (n==0)
return n;
else
return 3*an(n-1)+1;
}
i) Ce valoare returnează funcția la apelul an(5)?
ii) Dacă funcţia este apelată prin an(4), de câte ori se autoapelează?
a. de 4 ori; b. de 3 ori c. de 5 ori
iii) Pentru care din valorile de mai jos, care sunt parametri de intrare pentru funcţia
an, executarea funcţiei duce la eroare de execuție
a. 0; b. -1; c. 1; d. nici una din valorile de mai sus
4. (1 p) Se dă funcţia de mai jos:
void t(int n)
{ if (n>8)
{ t(n/8);
cout<<n%8;
}
else
cout<<n;
}
i) Care va fi valoarea afișată pentru apelul t(256)?
ii) Pentru valoare a lui n funcția afișează valoarea 111?
5. (1 p) Se dă funcţia de mai jos:
int t(int n)
{ if (n)
return (n%2==0)*n+t(n-1);
return 0;
}
i) Care va fi valoarea afișată pentru apelul t(11)?
ii) Propune o secvență de cod care pentru n dat să afișeze valoarea corectă doar
printr-o instrucțiune simplă
6. (0,5 p) Ce se va afişa în urma execuţiei programului următor?
int bn(int n);
int an(int n)
{ if(n==0) return 0;
return 2*an(n-1)+bn(n-1);
}
int bn(int n)
{ if(n==0) return 1;
return an(n-1)+bn(n-1);
}
int main()
{ cout<<an(4)<<" "<<bn(4);
return 0;
}
a)21 21 b)13 21 c)21 13 d)13 13
7. (1,5 p) Se dă expresia:
1 1 1
S= + + …+
1 ∙2 2∙ 3 n∙ ( n+1 )
a. să se realizeze un subprogram recursiv pentru calcularea expresiei.
b. să se realizeze un subprogram nerecursiv pentru calcularea expresiei.
c. să se realizeze secvență de cod pentru calcularea expresiei printr-o
instrucțiune simplă.
8. (1,5 p) Subprogramul cifra primește prin intermediul parametrului a un număr natural cu
cel mult 6 cifre și returnează ultima cifra pară a sa. Dacă numărul nu conține cifre pare
subprogramul returnează -1. De exemplu dacă a= 12356 subprogramul returnează 6, iar dacă
a=135 returnează -1. Să se scrie definiția completă a subprogramului. Se vor oferi două
soluții: una recursivă și una nerecursivă.

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