1. TESTUL 2
1. Care este rezultatul executiei subprogramului de mai jos:
function verif (n:integer): integer; int verif (int n)
begin {
if n>1 then if (n>0)
if v[n]<verific (n-1) then if (v[n-1]<verif (n-2))
verif:=verif (n-1) return verif (n-2);
else else return v[n-1];
verif:= v[n] else return v[0];
else verific:= v[1] }
end;
a) Determina c但te elemente din vector sunt mai mari dec但t n
b) Verifica daca toate elementele din vector sun mai mici sau egale cu n
c) Calculeaza maximul elementelor vectorului v
d) Calculeaza minimul elementelor vectorului v
R: c)
2. Fie subprogramul de tip functie, recursiv:
function verific (n :integer) : boolean; int verific ( int n)
begin {if (n<=1) if (v[1]>=0) return 1
if n<=1 then verific:=(v[1]>=0) else return 0
else verific:=(v[n]>0)or verific (n-1) else if (v[n]>=0)||(verific (n-1)= =1) return 1
end; else return 0;
}
a) Determina c但te elemente din vectorul v sunt strict pozitive
b) Verifica daca vectorul v cu n componente au numai elemente strict pozitive
c) Verifica daca vectorul v cu n componente are cel putin un element pozitiv
d) Determina c但te elemente din vectorul v sunt negative
R: c)
3. Fie subprogramele
procedure inv (n:byte);
begin void inv (char n)
write (n); { printf (%d,n)
if n>1 then inv (n-1) if (n>1) inv (n-1);
end; }
procedure direct (n:byte); void direct (char n)
begin {if (n>1) direct(n-1);
if n>1 then direct (n-1); printf (%d,n);
write (n); }
end;
2. Precizati ce se va tipari daca n=4 ?
a) 4 3 2 1 2 3 4
b) 4 3 2 2 3 4
c) 4 3 2 1 1 2 3 4
d) 4 3 2 1 0 0 1 2 3 4
R : c)
4. Fie subprogramul de mai jos :
function test (k :integer) : integer; int test (int k)
begin {
if k<3 then test:=1 if (k<3) return 1;
else test:= test (k-1)+test (k-2)+1 ; else return test (k-1)+ test (k-2)+1;
end;
}
Ce valoare are test (test (4)) ?
a) 1
b) 5
c) 4
d) 9
R: d)
6. Completa ti functia de mai jos cu instructiunile necesare pentru a calcula numarul aparitiilor
unui element X 樽ntr-un vector v cu n componente:
func tion ap (x,k :integer): integer; int ap (int x, int k)
begin { if (k = =0) return f)
if k=0 then ap:= f) else { if (v[k]= =x) return d)
else if v[k]=x then ap:= d) else return a)
else ap:= a) }
end;
}
a) ap (x, k-1)
b) ap (x,k-2)+ ap (x,k-1)
c) ap (x,k)
d) 1+ ap (x,k-1)
e) 1
f) 0
3. 7. Fie functia recursiva:
function test (n:integer):integer; int test (int n)
begin {
if n>=12 then test:=n-1 if (n>=12) return n-1
else test:=test(test(n+2)) else return test (test(n+2))
end; }
Ce valoare au test(8) ?
a) 13
b) 8
c) 11
d) niciuna din a,b,c nu e variata corecta
R: c)
8. Fie functia recursiva:
function ael (n,k : integer):integer; int ael ( int n, int k)
begin {
if k>(n div 2) then ael:= 0 if (k>n/2) return 0
else if n mod k=0 then ael:=1 else if (n%k= =0) return 1
else else return ael (n, k+1);
ael:=ael(n,k+1); }
end;
Ce valoare are functia ael (10,3) ?
a) 1
b) 0
c) programul cicleaza
d) exista erori de compilare
R: a)
9. Se considera functia recursiva:
function ael2 (n:integer): integer; int ael2 (int n)
begin { if (!(n%2)) return n/2;
if n mod 2=0 then ael2= n div 2 else return ael2 (ael2 (3*n+1))
else ael2:= ael2 (ael2 (3*n+1)) }
end;
1. Care este valoarea functiei ael2 (7) ?
a) 1
b) 11
c) 13
4. d) programul se blocheaza
R: c)
2. De c但te ori este apelata functia ael2 (7) ?
a) 17
b) 7
c) 13
d) nu intra 樽n executie
R: b)