Sunteți pe pagina 1din 2

Randul I

1. Se consideră subprogramul alăturat: Ce 6. Ce se afişează ca urmare a apelului p(123);


valoare are f(128,2)? dacă subprogramul p are definiţia alăturată.
int f(int a, int b)
{if (b<1) return -1; void p (int x)
else {cout<<x;
if (a%b==0) if(x!=0){p(x/10);
return 1+f(a/b,b); cout<<x%10;
else }
return 0; }
} 7. Se consideră subprogramul recursiv f1 definit
2. Se consideră subprogramul f cu definiţia alăturat. Ce se va afişa în urma apelului f1(5)?
alăturată. Ce valoare are f(1213111,1)? void f1(int x)
int f (long int n, int k) { if (x<=9)
{if (n!=0) { cout<<x+1;
if(n%10==k) f1(x+2);
return 1+f(n/10,k); cout<<x+3;
else return 0; }
else return 0; }
}
3. Se consideră subprogramul f, definit alăturat. 8. Subprogramul afis este definit alăturat. Ce se va
Ce valoare are f(4)? afişa în urma apelului afis(17)?
int f(int n)
{ if (n==0) return 1; void afis(int x)
else if (n==1) return 2; { if (x>3)
else return f(n-1)-f(n-2); { cout<<x-1;
} afis(x/3);
4. Pentru definiţia alăturată a subprogramului cout<<x+1;
f, stabiliţi ce valoare are f(123)? }
int f(int x) }
{ if(x==0)return 0;
else 9. Subprogramul re este definit alăturat. Ce
if(x%2==0)return 3+f(x/10); valoarea are re(1)?
else return 4+f(x/10); }
int re(int i)
{
5. Subprogramul scrie este definit alăturat. Ce se
if (i<9) return 3+re(i+2);
afişează ca urmare a apelului scrie(1,7);
else
void scrie (int x,int y)
if (i==9) return -2;
{cout<<x<<y; |
else return 1+re(i-1);
if(x<y)
}
{scrie(x+1,y-1);
cout<<(x+y)/2;
Se acordă un punct din oficiu si un punct pentru
}
fiecare răspuns corect.
}
Randul I

Barem de notare

1. f(128, 2)=7 (1punct)


2. f(1213111,1)=3 (1punct)
3. f(4)= -2 (1punct)
4. f(123)=11 (1punct)
5. scrie(1,7)=17263544444 (1punct)
6. p(123)=1231210123 (1punct)
7. f1(5)=681012108 (1punct)
8. afis(17)=164618 (1punct)
9. re(1)=10 (1punct)

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