Sunteți pe pagina 1din 16

2.

Tipuri de date structurate

2.1. Tipul tablou unidimensional

2.1.1. Teste gril (limbaj pseudocod, Pascal | C/C++)

1. Se consider un vector cu n elemente reale sortate. Dac se dorete aflarea


valorii maxime din vector, numrul minim de comparaii necesare este:
a. n b. 2n c. 1 d. n-1

2. Numrul de interschimbri care se efectueaz n cazul sortrii cresctoare a


irului de numere: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 prin metoda
bulelor este:
a. 121 b. 11 c. 10 d. 55

3. De cte ori se parcurge irul n cazul sortrii descresctoare a vectorului: 10,


9, 8, 7, 6, 5, 4, 3, 2, 1, 0 prin metoda bulelor?
a. o dat b. de 9 ori c. de 2 ori d. de 10 ori

4. Pentru cutarea unei valori ntre elementele unui vector ordonat


descresctor, vom utiliza un algoritm eficient de tip:
a. interschimbare b. quick sort c. cutare binar d. backtracking

5. Cea mai mare dintre valorile strict negative memorate ntr-un vector NU
exist dac:
a. n vector sunt memorate numai valori strict negative
b. n vector exist cel puin o valoare negativ
c. n vector sunt memorate valori nenule pozitive i negative
d. n vector sunt memorate numai valori strict pozitive

6. Dac se caut un numr x ntr-un ir de numere ordonat descresctor,


cutarea secvenial este o metod
a. incorect i ineficent c. corect i eficient
b. corect, dar ineficient d. incorect

7. Vectorul A conine, ncepnd cu indicele 1 elementele


(1,2,2,3,3,3,4,4,4,4,...). Care este valoarea elementului cu
indicele 25 ?
a. 25 b. 7 c. 6 d. 12

74
8. Pentru a verifica dac toate elementele unui vector A sunt strict mai mici dect
toate elementele unui alt vector B ordonat cresctor, se compar pe rnd
fiecare element din A cu toate elementele din B. Aceast metod de verificare
este:
a. incorect b. corect dar neeficient
c. corect numai pentru componente ntregi d. corect i eficient

9. Pentru a verifica dac toate elementele unui vector ordonat descresctor A


sunt strict mai mici dect toate elementele unui alt vector B ordonat cresctor,
se compar primul element din A cu primul element din B. Aceast metod de
verificare este:
a. corect numai pentru componente ntregi b. corect i neeficient
c. corect i eficient d. incorect

10. Care din secvenele de program pseudocod de mai jos elimin corect
elementul x1 din vectorul avnd componentele x1, x2,..., xn ?
a. i1 b. i2
ct timp i<=n-2 execut ct timp i<=n execut
xixi+1; ii+1 xixi-1; ii+1

nn-1 nn-1
c. i2 d. i2
ct timp i<=n execut ct timp i<=n execut
xi-1xi; ii+1 xixi+1; ii+1

nn-1 nn-1

11. Pentru un vector v cu 101


i1; j101
componente reale se utilizeaz ct timp a a execut
i j
secvena pseudocod alturat pentru
ii+1; jj-1
a verifica dac orice dou elemente
sfrit ct timp
distincte egal deprtate de capetele
dac ... atunci scrie 'DA'
vectorului au valori diferite. Cu ce altfel scrie 'NU'
expresie logic trebuie nlocuite sfrit dac
punctele de suspensie?
a. ai=aj b. aiaj c. ij d. i=j

75
12. Pentru a sorta vectorul v, care are pentru i=1,99 execut
100 de componente numerotate de xi
la 1 la 100, se folosete algoritmul pentru j=i+1,100 execut
pseudocod alturat. Care este dac vj<vx atunci
numrul maxim de interschimbri xj
care pot fi executate?

dac xi atunci
tvx; vxvi; vit


a. 50 de interschimbri b. 200 de interschimbri
c. 99 de interschimbri d. 100 de interschimbri

13. Fie v un vector cu n=9 componente s0


ntregi. pentru i=0, n-1 execut
Ce va afia secvena alturat pentru dac (i mod 2 =0)
v =(14, 3, 7, 0, -4, 3, 10, atunci ss+vi
15, 7) ?

S-a notat cu x mod y restul mpririi
numrului natural x la numrul natural y. scrie s
a. 34 b. 21 c. 50 d. 0

14. Algoritmul alturat determin n variabila


K15
K numrul tuturor componentelor ce
pentru i1,15 execut
memoreaz o valoare pozitiv de cel
dac 99 >= ... atunci
puin trei cifre dintre cele 15 componente
K...+K
ntregi ale vectorului a. Cu ce pot fi

nlocuite punctele de suspensie?
a. ai i 1 b. ai i -i c. ai i -1 d. K i -1

15. Algoritmul alturat determin n variabila K0


K suma tuturor componentelor pozitive pentru i1,15 execut
dintre cele 15 componente ntregi ale dac ai>=...
vectorului a. Cu ce pot fi nlocuite atunci K...+K
punctele de suspensie?

a. 0 i a1 b. 0 i ai c. K i ai d. a1 i ai

76
16. n secvena alturat s-a notat cu pentru i 1, n execut
x%y restul mpririi numrului dac (i%2=0) i (a[i]%2>0)
ntreg x la numrul ntreg y. atunci scrie a[i]
Aceast secven are ca efect:

a. Tiprirea elementelor de valoare impar aflate pe poziii pare n tabloul a
b. Tiprirea elementelor de valoare impar aflate pe poziii impare n tabloul a
c. Tiprirea elementelor de valoare par aflate pe poziii impare n tabloul a
d. Tiprirea elementelor de valoare par aflate pe poziii pare n tabloul a

17. Fie v un vector cu n=9 componente s0


ntregi. pentru i=0, n-1 execut
Ce va afia secvena alturat pentru dac (i mod 2 =0)
atunci ss+vi
v=(14,3,7,0,-4, 3,10,15,7) ?


scrie s
a. 34 b. 21 c. 50 d. 0

1. Fie tabloul unidimensional a n care elementele sunt, n ordine :


1,3,5,7,10,16,21. Pentru a verifica dac numrul x=4 se afl printre
elementele tabloului, se aplic metoda cutrii binare. Care este succesiunea
corect de elemente cu care se compar x ?
a. 1,3,5 b. 7,5,3 c. 7,3,5 d. 21,16,10,7,5,3

18. Cutarea unui element ntr-un vector ordonat descresctor se realizeaz n


mod eficient cu un algoritm care utilizeaz:
a. metoda cutrii binare b. sortarea cresctoare a vectorului
c. metoda backtracking d. parcurgerea iterativ a vectorului

19. Fie trei secvene de numere:


i) 1,4,6,8,9 ii) 8,5,4,3,2,1 iii) 2,3,8,5,9
Algoritmul de cutare binar se poate aplica direct, fr alte prelucrri
prealabile:
a. numai secvenei i b. numai secvenei iii
c. numai secvenei ii d. att secvenei i ct i secvenei ii

21. Se consider dou tablouri unidimensionale A i B: A=(1,3,5,9,10)


respectiv B=(2,4,6,7). In urma interclasrii lor n ordine cresctoare se
obine tabloul cu elementele:
a. (1,2,3,4,5,6,9,7,10) b. (1,2,3,4,5,6,7,9,10)
c. nu se poate realiza interclasarea d. (1,3,5,9,10,2,4,6,7)

77
22. Se consider o stiv implementat prin intermediul vectorului a cu
elementele : a[0]=0, a[1]=10, a[2]=20, a[3]=30, a[4]=40,
a[5]=50. Dac cel de-al doilea element, ncepnd de la baza stivei, este
10, atunci primul element care iese din stiv este:
a. a[6] b. a[1] c. a[5] d. a[0]

23. Un program care urmeaz s sorteze cresctor 15 numere reale aflate ntr-
un fiier, citete aceste numere ntr-o variabil x. Cum trebuie declarat
aceast variabil?
a. var x:integer; a. int x;
b. var x:array[1..15]of real; b. float x[15];
c. var x:array[1..15]of word; c. unsigned x[15];
d. var x:real; d. float x;

24. ntr-o variabil se vor memora simultan cele 18 medii semestriale la


disciplinele studiate i media aritmetic a acestora. Care este declararea
corect pentru acest variabil?

a. var a:array[1..18] of real; a. double a[18];


b. var a:array[1..19] of real; b. float a[19];
c. var a:array[1..19] of byte; c. int a[19];
d. var a:array[1..20] of word; d. long a[20];

25. Care este declararea corect a unei variabile x pentru a memora 3 numere
ntregi mpreun cu media lor aritmetic?
a. var x:array[1..4] of real; a. float x[4];
b. var x: real[1..4]; b. int x[3];
c. var x::array[4] of integer; c. float x[3];
d. var x:array[1..4] of integer; d. int x[4];

26. Care dintre urmtoarele declarri nu poate fi o declarare corect a unei


variabile a utilizat pentru memorarea simultan a cel mult 100 de numere
reale?
a. var a:record a. struct {float c[50];
x,y:array[1..50] of real; float b[50];
end; } a;
b. var a:array[1..20,1..5] of real; b. float a[20][5];
c. var a:array[1..100] of real; c. float a[100];
d. var a:array[1..100] of integer; d. int a[99];

27. Variabilele a i i sunt declarate astfel:

78
Var i:integer; int a[100], i;
a:array[1..100] of integer;
Care dintre urmtoarele instruciuni este corect din punct de vedere
sintactic?
a. a[1] := i a. a[1] = i;
b. a := i b. a = i;
c. i := a c. i = a;
d. i[1] := a d. i[1] = a;

28. n secvena alturat variabilele i i n sunt de tip integer/int, min este


de tip real/float, iar vectorul x, cu indicii de la 1, conine n numere
reale. Cu ce trebuie nlocuite punctele de suspensie din secven astfel nct,
la finalul executrii ei, variabila min s conin cea mai mic valoare
memorat de componentele vectorului x ?
min:=.... min= ....
for i:=2 to n do for(i=2; i<=n; i++)
if .... then min:=x[i]; if (....) min=x[i];

a. 0; i x[i]<min a. 0; i x[i]<min
b. x[1]; i x[i]<min b. x[1]; i x[i]<min
c. x[1]; i x[i] >=min c. x[1]; i x[i]>=min
d. x[n]; i x[i]<=min d. x[n]; i x[i]<=min

29. Fie vectorii a i b n care a =(1,2,4,5,3) i b=(4,2,1,3). Atunci


a[b[1]] are valoarea:
a. 5 b. 3 c. 2 d. 1

30. Se consider tabloul unidimensional a=(0,1,3,2). Indicai tabloul


unidimensional b astfel nct pentru orice 0<=i<4 s existe relaia
a[b[i]]=b[a[i]].
a. b=(0,1,2,3) b. b=(3,1,0,2) c. b=(2,3,0,1) d. b=(1,0,2,3)

31. Fie v un vector cu n elemente de tip ntreg, iar n un numr natural nenul
(n<=100). De cte ori se repet instruciunea i:=i+1; / i++; n timpul
executrii secvenei de instruciuni urmtoare?
i:=0; i=0;
while i<n do while (i<n)
begin { i++;
i:=i+1; v[i]:=i*i v[i]=i*i;
end }
a. n ori b. n+1 ori c. 0 ori d. n-1 ori

79
32. Fie v un tablou unidimensional format din n componente ntregi, numerotate
de la 1 la n, iar p i k dou variabile de tip ntreg. n care dintre urmtoarele
secvene variabilei p i se atribuie prima valoare strict pozitiv din tabloul v,
dac exist o astfel de valoare, sau 0 in caz contrar?
a. p:=0;k:=1; a. p=0;k=1;
while v[k]>=0 do k:=k+1; while(v[k]>=0) k++;
p:=v[k] p=v[k];
b. p:=0;k:=n; b. p=0;k=n;
while v[k]<=0 do k:=k-1; while(v[k]<=0) k--;
p:=v[k] p=v[k];
c. p:=0; c. p=0;
for k:=1 to n do for(k=1;k<=n;k++)
if (v[k]>0)and(p=0) if((v[k]>0)&&(p==0))
then p:=v[k] p=v[k];
d. p:=0; d. p=0;
for k:=1 to n do for(k=1;k<=n;k++)
if v[k]>0 then p:=v[k] if(v[k]>0) p=v[k];

33. Fie v un tablou unidimensional format din n numere ntregi (n>=2). tiind c
primul element din tablou se afl pe poziia 1, indicai care dintre urmtoarele
secvene atribuie variabilei ntregi max cea mai mare valoare din tabloul v:
a. for i:=2 to n do a. for(i=2;i<=n;i++)
if v[i-1]<=v[i] then if(v[i-1]<=v[i])
v[i-1]:=v[i]; v[i-1]=v[i];
write(v[1]) max=v[1];
b. for i:=1 to n-1 do b. for(i=1;i<=n-1;i++)
if v[i+1]>v[i] then if(v[i+1]>v[i])
v[i]:=v[i+1]; v[i]=v[i+1];
write(v[1]) max=v[1];
c. for i:=2 to n do c. for(i=2;i<=n;i++)
if v[i-1]>v[i] then if(v[i-1]>v[i])
v[i]:=v[i-1]; v[i]=v[i-1];
write(v[n]) max=v[n];
d. for i:=n downto 2 do d. for(i=n;i>=2;i--)
if v[i]>v[i-1] then if(v[i]>v[i-1])
v[i]:=v[i-1]; v[i]=v[i-1];
write(v[n]) max=v[n];

34. Se considera tabloul unidimensional a=(1,2,3,4,5). Care va fi rezultatul


afiat n urma executrii secvenei urmtoare?
for i:=1 to 5 do begin for (i=0;i<5;i++)
s:=0; {s=0;
for j:=1 to i do for(j=0;j<=i;j++) s=s+a[j];
s=s+a[i]; printf(%d,s); /cout<<s;
write(s)
}
end
a. 1151515 b. 15 c. 6101315 d. 1361015

80
35. Care dintre secvenele de mai jos conduce la memorarea n variabila max a
celei mai mari dintre cele n valori ntregi reinute n tabloul unidimensional a
(n care a[1] este primul element) ?

a. for i:=1 to n-1 do a. for(i=0;i<n-1;i++)


if a[i]>a[i+1] then max:=a[i]; if(a[i]>a[i+1])
max=a[i];
b. for i:=1 to n-1 do b. for(i=0;i<n-1;i++)
if a[i]>a[i+1] then if(a[i]>a[i+1])
begin { max=a[i];
max:=a[i]; a[i]=a[i+1];
a[i]:=a[i+1]; a[i+1]=max;
a[i+1]:=max }
end; max:=a[n]; max=a[n-1];
c. max:=a[1]; for i:=2 to n do c. max=a[0];
if a[i]<max then max:=a[i]; for(i=1;i<n;i++)
if(a[i]<max) max=a[i];
d. max:=0; d. max=0;
for i:=1 to n do for(i=0;i<n;i++)
if a[i]>max then a[i]:=max; if(a[i]>max)a[i]=max;

36. Cu ce expresie trebuie nlocuite punctele de suspensie astfel nct n urma


executrii secvenei alturate s se deplaseze elementele vq, vq+1,....vk
ale unui tablou unidimensional v cu p-1 poziii spre dreapta?
for j:=k downto q do for (j=k; j>=q; j--)
v[]:=v[j] v[]=v[j]
a. p-1-j b. j-p+1 c. p-1+j d. p-j+1

37. Se consider urmtoarele declarri:


const x:vector=array[0..4] of int x[5]={0,1,5,3,4};
integer =(0,1,5,3,4); int y,i;
var y,i:integer;
Ce va afia secvena urmtoare?
y:=x[1]; y=x[1];
for i:=0 to 4 do for(i=0;i<=4;i++)
if y<x[i] then y:=x[i]; if(y<x[i]) y=x[i];
write(y); cout<<y;

a. 0 b. 5 c. 13 d. nedeterminat

38. Se consider un tablou unidimensional a n care:


a[1]=4, a[2]=2, a[3]=5, a[0]=4, a[1]=2, a[2]=5,
a[4]=1, a[5]=3. a[3]=1, a[4]=3.
Care va fi coninutul su dup executarea secvenei de mai jos (n care
variabilele i i aux sunt de tip integer/int )?

81
for i:=1 to 4 do for (i=0;i<4;i++)
if a[i]>a[i+1] then begin if (a[i]>a[i+1]){
aux:=a[i]; aux=a[i];
a[i]:=a[i+1];a[i+1]:=aux a[i]=a[i+1];a[i+1]=aux;
end; }
a. a[1]=2, a[2]=4, a[3]=1, a. a[0]=2, a[1]=4, a[2]=1,
a[4]=3, a[5]=5 a[3]=3, a[4]=5
b. a[1]=4, a[2]=2, a[3]=5, b. a[0]=4, a[1]=2, a[2]=5,
a[4]=1, a[5]=3 a[3]=1, a[4]=3
c. a[1]=1, a[2]=2, a[3]=3, c. a[0]=1, a[1]=2, a[2]=3,
a[4]=4, a[5]=5 a[3]=4, a[4]=5
d. a[1]=4, a[2]=2, a[3]=1, d. a[0]=4, a[1]=2, a[2]=1,
a[4]=3, a[5]=5 a[3]=3, a[4]=5

39. Se consider un tablou unidimensional a n care elementele sunt, n ordine :


1,3,5,7,10,16,21. Pentru a afla poziia pe care se afl valoarea x=10 se
aplic metoda cutrii binare. Care este succesiunea corect de elemente a
cror valoare se compar cu valoarea lui x ?
a. 21,16,10 b. 7,16,10 c. 1,3,5,7,10 d. 5,7,10

40. Dac n=10 i vectorul a conine, ncepnd de la poziia 0 pn la poziia 9


valorile 3, 5, 2 , 6, 8, 2, 1, 6, 9, 10 n aceasta ordine, ce
afieaz secvena de instruciuni de mai jos?
for i:=0 to n-1 do for(i=0;i<n;i++)
if (i mod 2=1) then if (i%2==1)
if(a[i] mod 2=0) then if(a[i]%2==0)
write(a[i],' '); cout<<a[i]<< ;
/ printf(%d ,a[i]);
a. 2 8 b. 6 2 6 10 c. 6 2 6 d. 5

41. tiind c variabila v este un tablou unidimensional cu 100 de componente ce


memoreaz valori distincte de tip integer/int, care este valoarea reinut
de componenta v[1]/v[0] n urma executrii secvenei de instruciuni
urmtoare?
for i:=100 downto 2 do for(i=99;i>0;i--)
if v[i]<v[i-1] then begin if(v[i]<v[i-1]){
v[i]:=v[i]+v[i-1]; v[i]=v[i]+v[i-1];
v[i-1]:=v[i]-v[i-1]; v[i-1]=v[i]-v[i-1];
v[i]:=v[i]-v[i-1]; v[i]=v[i]-v[i-1];
end; }
a. valoarea care apare cel mai frecvent n tablou
b. cel mai mic element al tabloului
c. suma elementelor tabloului
d. cel mai mare element al tabloului

82
2.1.2. Probleme ( programe pseudocod, Pascal | C/C++ )

1. Se consider programul
pseudocod alturat n care s-a folosit pentru i=1,10 execut
notaia [x] pentru partea ntreag a ai = 2*i
lui x .
citete c (numr ntreg)
1) Ce se va afia pentru c=8? s1 ; d10 ; g0 ; k0
repet
2) Scriei o valoare strict pozitiv de o m [(s+d)/2]
cifr pentru variabila c astfel nct k k+1
dac se citete aceast valoare, dac c=am atunci g1
programul afieaz valorile 0 i 4. altfel
3) Scriei programul pseudocod care s dac c<am atunci
fie echivalent cu algoritmul dat i care dm-1
s foloseasc o structur repetitiv cu altfel sm+1
test iniial n locul structurii repetitive
repet...pan cnd.
pn cnd g=1 sau s>d
4) Scriei programul Pascal/C/C++ scrie g,k
corespunztor cu algoritmul dat.

2. Se consider programul pseudocod citete n


alturat: (numr natural nenul)
pentru i=1,n execut
1) Ce se va afia dac se citesc valorile 8, citete ai
1, 7, 10, 3, 12, 1, 2, 6 ?
m a1
2) Scriei un ir de cel puin 6 valori care pentru i=2,n execut
dac este citit determin afiarea unei dac ai este numr
valori impare par atunci
dac m < ai atunci
m ai
3) Scriei programul pseudocod care s fie
echivalent cu algoritmul dat i care s
foloseasc alte tipuri de structuri
repetitive. scrie m
4) Scriei programul Pascal/C/C++ corespunztor cu algoritmul dat.

83
3. Se consider programul pseudocod
citete n {numr natural }
alturat:
pentru i0,9 execut
S-a notat cu x%y restul mpririi numrului ai0
natural x la numrul natural y i cu [z] partea
ntreag a numrului real z. repet
i n%10; ai ai +1;
1) Ce se va afia pentru n=10220685? n[n/10]
pn cnd n=0
2) Cte valori pot fi introduse pentru variabila
pentru i9,0,-1 execut
n astfel nct rezultatul afiat n urma
pentru j1,ai
executrii algoritmului s fie 720.
scrie i
3) Scriei programul pseudocod care s fie
echivalent cu algoritmul dat i care s
conin o structur repetitiv cu test iniial
n locul structurii repetitive cu test final.
4) Scriei programul Pascal/C/C++ corespunztor cu algoritmul dat.

4. Se consider programul pseudocod


alturat: pentru i1,5 execut
S-a notat cu ak elementul aflat pe poziia k n citete ai (numr ntreg)
tabloul unidimensional cu numele a, cu |x|
valoarea absolut a numrului natural x i cu [x] pentru i1,4 execut
partea ntreag a numrului x. mai+ai+1+|ai-ai+1|
ai+1ai+ai+1-[m/2]
1) Ce se afieaz dac sunt citite, n ordine,
numerele 3, 5, 8, 1, 7? ai[m/2]

2) Scriei o succesiune de valori citite pentru
elementele a1, a2, a3, a4, a5 astfel scrie a5
nct s se afieze prima valoare
introdus.
3) Explicai n limbaj natural efectul atribuirilor
mai+ai+1+|ai-ai+1|
ai+1ai+ai+1-[m/2]
ai[m/2]
din algoritmul dat.
4) Scriei programul PASCAL/C/C++ corespunztor algoritmului dat alturat.

84
5. Se consider programul pseudocod urmtor, unde v reprezint un tablou
unidimensional cu elemente numere ntregi n care v1 este primul element al
tabloului, v2 este al doilea, ... , iar vn este ultimul.
1) Care este valoarea afiat dac de la
citete n (n N impar)
1. tastatur se citesc, n ordine, valorile pentru i=1,n execut
5,1,7,3,2,3? citete vi
2) Dac n=7, iar urmtoarele 7 valori citite sunt
2. egale ntre ele, care trebuie s fie valoarea lor i0; j0
ct timp j<n execut
astefel nct s se afieze 8 ?
ii+1; jj+2
3) Scriei programul PASCAL/C/C++
3. corespunztor algoritmului dat. scrie vi
4) Scriei un algoritm pseudocod echivalent cu cel dat care s nu utilizeze alte
4. structuri repetitive n afara celei folosite pentru citirea tabloului.

citete n {numr natural >1}


6. Se consider programul
pentru i 1,n execut
pseudocod alturat .S-au folosit v[i] i
urmtoarele notaii mod pentru restul
mpririi ntregi iar div pentru ctul pentru i2,[ n ]execut
mpririi ntregi . dac v[i]<>0 atunci
1) Ce se va afia pentru n=20? j i
2) Pentru cte valori ale lui n se vor repet
afia exact 6 numere. jj+i;v[j] 0
pn cnd j>n
3) Scriei un program pseudocod care
s fie echivalent cu cel dat, dar n
care s se nlocuiasc prima pentru i2,n execut
structur repetitiv pentru cu o dac v[i]<>0 atunci
structur repetitiv cu test iniial. scrie i
4) Scriei programul PASCAL/C/C++
corespunztor algoritmului dat.

7. Se consider programul pseudocod citete n (n natural<100)


alturat: pentru i1,n execut
s-a notat cu x%y restul mpririi numrului citete vi (ntreg)
natural x la numrul natural y
1) Ce valori se vor afia n urma executrii citete x; nr 0
programului pseudocod pentru x=3 i pentru i1,n execut
v=(4,6,11,16,9,12,21,8)? dac vi%x=0 atunci
2) Dai o valoare variabilei x astfel nct nrnr+1; scrie vi
pentru irul de numere de la punctul
anterior valoarea variabilei nr s rmn
0. scrie nr

85
3) Ce proprietate trebuie s ndeplineasc elementele vectorului v pentru a fi
afiate?
4) Scriei programul Pascal/C/C++ corespunztor algoritmului dat.

8. Se consider programul pseudocod


citete n (nr natural de cel
alturat: mult trei cifre)
1) Ce se va afia n urma executrii pentru i1,n execut
secvenei pseudocod alturat, dac citete ai (nr. natural)

pentru numrul natural n se citete
s 0
valoarea 8, apoi cele opt componente pentru i1,n execut
citite de la tastatur sunt n ordine: 0, 1, dac ai = i atunci
3, 3, 5, 6, 4, 8. ai ai + i
ct timpa[i] =i
2) Pentru n = 5 scriei un alt set de valori altfel
pentru componentele irului, astfel nct s s + 1
variabila s s aib valoarea 0, n urma
executrii algoritmului.
scrie s
3) Scriei programul Pascal/C/C++ pentru i1, n execut
corespunztor algoritmului dat. scrie ai

4) nlocuii n secvena de pseudocod expresia ai = i cu o alt expresie, astfel


nct variabila s s afieze numrul de componente pare ale irului.

9. Se consider programul pseudocod


alturat care prelucreaz numerele naturale citete n
nenule dintr-un tablou unidimensional a, de (n nr natural, 1<n100)
dimensiune n. S-a notat cu x%y restul pentru i1,n execut
mpririi numerelor ntregi x i y. citete ai

1) Pentru n=7 i a=(3,7,5,49, max0; nr0;
21,77,70) precizai ce se afieaz n pentru i1,n execut
urma executrii algoritmului. dac ai%7=0 atunci
nrnr+1
2) Pentru n=7 dai un exemplu de valori dac ai>max atunci
pentru a, astfel nct variabila nr s maxai

memoreze la finalul executrii algoritmului

cea mai mare valoare posibil.

3) Pentru n=5 scriei un exemplu de valori scrie max,nr
pentru a astfel nct rezultatul afiat n
urma executrii algoritmului s fie: 0 0.

4) Scriei programul Pascal/C/C++ corespunztor algoritmului din enun.

86
10. Se consider programul
pseudocod alturat: citete n
{n numr natural, 1<n100}
1) Care sunt valorile afiate n urma pentru i1,n execut
executrii, dac se citete citete ai
succesiunea de valori: 5, 7, 8, 1, 0,
6? pentru i2,n execut
x ai; ji-1
2) Precizai o succesiune de 7 valori
ct timp j>0 i x<aj execut
care pot fi citite astfel nct aj+1aj; ajx; jj-1
instruciunile din structura repetitiv
ct timp s nu se execute
niciodat. pentru i1,n execut
3) Scriei programul Pascal/C/C++ scrie ai
corespunztor algoritmului dat.
4) Scriei un program pseudocod echivalent cu algoritmul dat, care utilizeaz o
structur repetitiv cu test final n locul structurii repetitive ct timp.

11. Se citete de la tastatur un numr natural n, 0<n<1000000. S se afieze pe


ecran, dac exist, un numr natural care este strict mai mare dect n i care
are exact aceleai cifre ca i n. Dac nu exist un astfel de numr, se va afia
mesajul Nu exist.
De exemplu, pentru n=165, se poate afia valoarea 561.
a) Alegei un algoritm eficient ca timp de executare. Descriei metoda n
limbaj natural pe cel mult 4 rnduri. (2p.)
b) Scriei programul Pascal/C corespunztor metodei descrise. (8p.)

12. Scriei un program care construiete n memorie un vector a cu toate numerele


de dou cifre, cu cifre distincte, pare, aflate n ordine descresctoare.
Elementele vectorului vor fi n ordine strict descresctoare. Afiai elementele
vectorului a pe o linie a ecranului desprite printr-un spaiu.
Exemplu: vectorul va avea elementele: 86, 84, 82, 80, 64, ..., 20.

13. Scriei un program care citete de la tastatur un vector a cu 15 elemente


numere reale pozitive i afieaz pe ecran pentru fiecare element al vectorului
cel mai mic numr natural mai mare sau egal cu el i cel mai mare numr
natural mai mic sau egal cu el. Valorile vor fi afiate pe ecran desprite printr-un
spaiu.
Exemplu: Dac vectorul a conine elementele: 12.3 1.98 14.67 1 3.11
2.08 3.9 12.89 7.99912 8 6.7 1.001 13 8.9909 4.7 pe ecran se
vor afia numerele: 13 12 2 1 15 14 1 1 4 3 3 2 4 3 13 12 8 7 8
8 7 6 2 1 13 13 9 8 5 4

87
14. Se citesc de la tastatur dou valori naturale m i n (m,n<=100), iar apoi
m+n numere ntregi de cel mult 9 cifre fiecare. Dintre cele m+n numere citite
primele m sunt ordonate strict cresctor, iar urmtoarele n sunt deasemenea
ordonate strict cresctor. Se cere s se afieze pe ecran care din cele m+n
numere au fost citite de dou ori.
a) Descriei un algoritm eficient de rezolvare a acestei probleme, explicnd
n ce const eficiena acestuia.
b) Scriei programul Pascal corespunztor algoritmului descris.
De exemplu pentru m=7 i n=10 i valorile 1,2,3,4,5,6,20,3,5,7,8,
9,10,12,20, 24,35 se vor afia valorile 3 5 20.

15. Pe o hart sunt figurate n ri, numerotate cu 1,2,...n (2<n<100). Se


consider c ara i este vecin cu ara j dac i=[j/2] sau j=[i/2] (s-a
notat cu [x] partea ntreag a numrului real x). De exemplu, pentru n=3,
rile 1 i 2 sunt vecine deoarece 1=[2/2], rile 3 i 1 sunt vecine deoarece
1=[3/2], n timp ce rile 2 i 3 nu sunt vecine deoarece 2[3/2] i
3[2/2].
Harta a fost colorat cu 4 culori (notate cu 1 2, 3, 4) i se consider c
o variant de colorare este corect dac oricare dou ri vecine au o culoare
diferit.
Scriei un program Pascal/C/C++ care citete n, apoi n numere
desprite prin cte un spaiu, reprezentnd, n ordine, culoarea fiecreia
dintre cele n ri (de la ara 1 la ara n) i verific dac harta a fost colorat
corect sau nu, afind pe ecran mesajul corect, respectiv incorect.
Exemplu: dac se introduc valorile n=4 i numerele 1 2 3 2
corespunztor asocierilor: ara 1-culoarea 1, ara 2-culoarea 2,
ara 3-culoarea 3, ara 4-culoarea 2, atunci se va afia incorect pentru c
rile 2 i 4 au aceeai culoare i sunt vecine.

16. Se citete de la tastatur un ir de numere naturale mai mici dect 10000


(irul are cel mult 100 de valori). irul se termin atunci cnd se introduce o
valoare negativ (aceasta valoare nu face parte din ir). Scriei programul
Pascal/C/C++ ce afieaz pe ecran, n ordine cresctoare, toate numerele
impare din ir, separate prin cte un spaiu.
De exemplu, dac au fost introduse urmtoarele valori: 7 2 1 9 4 0 7
3 22 -3 se vor afia valorile 1 3 7 7 9.

17. Se citesc de la tastatur n (n<100) numere naturale mai mici dect 10000.
Scriei programul Pascal/C/C++ ce afieaz pe ecran n ordine
cresctoare toate numerele ce ncep i se termin cu aceeai cifr.
Numerele se afieaz separate prin cte un spaiu.
Exemplu: Dac n=6, iar numerele citite sunt: 21 3123 7 454 45 10
atunci programul va afia: 7 454 3123.

88
18. Scriei un program Pascal/C/C++ care citete un numr natural nenul par, n,
n<100 i apoi n numere naturale de cel mult 4 cifre fiecare i determin cea mai
mare sum care poate fi obinut adunnd numai o jumtate din toate numerele
citite. Rezultatul se va afia pe ecran. De exemplu, pentru n=6 i numerele
728,10,103,44,1000,94 se va afia: 1831 (reprezentnd suma:
728+103+1000)

19. Scriei un program C/C++ care citete de la tastatur un numr natural nenul n
(n1000), construiete n memorie i apoi afieaz pe ecran un tablou
unidimensional a, avnd n elemente. Tabloul a se completeaz cu numerele
naturale de la 1 la n, astfel: se memoreaz valoarea 1 pe poziia 1, valoarea 2
pe poziia n, 3 pe poziia 2, 4 pe poziia n-1, 5 pe poziia 3, etc. Elementele
tabloului se afieaz pe ecran cu cte un spaiu ntre ele.
Exemplu: pentru n=9 tabloul afiat este: 1 3 5 7 9 8 6 4 2

89

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